Herramientas para facilitar el trabajo con datos de comunas y regiones de Chile en R.
Los datos sobre temáticas sociales suelen venir en dudosa calidad, sobre
todo cuando se desagregan a nivel comunal: nombres mal escritos, en
mayúsculas, sin eñes, sin tildes, etc. Así que creé {territorial} para
facilitar este tipo de tareas!
El objetivo de este paquete es simplificar el análisis de datos territoriales de Chile, facilitando tareas de limpieza y procesamiento de datos que suelen ser necesarias al trabajar con datos de Chile a nivel comunal y regional.
Por ejemplo:
- Revisar si los nombres de comunas y regiones vienen bien escritos
(
validar_comunas()yvalidar_regiones()) - Limpiar automáticamente los nombres de las comunas con
limpiar_comunas(), incluso si vienen con faltas de ortografía o mal escritas - Agregar todos los datos territoriales faltantes a una tabla a partir
de las comunas (
contextualizar()) - Ordenar las regiones del país de norte a sur
(
ordenar_regiones()) - Convertir nombres de comunas a códigos únicos
territoriales
(
as_codigo_comuna()) y convertir códigos únicos territoriales a nombres de comunas (as_nombre_comuna()) - Redactar los nombres de las regiones (
redactar_region()) para que, por ejemplo, “Maule” sea “Región del Maule” - Clasificar las comunas de Chile en urbanas, mixtas y rurales
con
agregar_clasificacion() - Clasificar las regiones de Chile en macrozonas con
agregar_macrozona() - y más!
Revisa la
viñeta
vignette("territorial") para una introducción al paquete!
Puedes instalar la versión de desarrollo este paquete desde GitHub:
# install.packages("pak")
pak::pak("bastianolea/territorial")Como su nombre lo dice, {territorial} entrega herramientas para
trabajar con datos territoriales de Chile, entendidos como datos
tabulares cuyas observaciones correspondan a comunas o regiones del
país.
library(territorial)La premisa del paquete es que tenemos una tabla
(territorial::territorios) que contiene los nombres oficiales y los
códigos únicos territoriales de todas las regiones, provincias y comunas
de Chile. Usando esta tabla como fuente de verdad, podemos validar,
corregir y complementar datos territoriales.
También se plantea el estándar de llamar las columnas como nombre_{x}
y codigo_{x} (por ejemplo, nombre_comuna y codigo_comuna), para
mantener orden y compatibilidad entre tablas, aunque esto es opcional.
Probemos {territorial} con una tabla con datos de ejemplo:
# crear una tabla con datos de ejemplo
datos <- dplyr::tibble(
nombre_comuna = c("PIRQUE", "El Monte", "Maipu", "nunoa",
"La calera", "prohibidencia", "Penialolen",
"CERRILLOS", "San José De Maipo", "OHiggins"))
datos# A tibble: 10 × 1
nombre_comuna
<chr>
1 PIRQUE
2 El Monte
3 Maipu
4 nunoa
5 La calera
6 prohibidencia
7 Penialolen
8 CERRILLOS
9 San José De Maipo
10 OHiggins
Estas comunas vienen en mayúsculas, con faltas de ortografía, y mal escritas!
Podemos revisar la calidad de los nombres de las comunas con
validar_comunas(), para detectar posibles problemas:
datos |>
validar_comunas(nombre_comuna) # cuando la columna con nombres de comunas se llama `nombre_comuna`, no es necesario especificarla! Resumen: 9 casos de comunas que no conciden con comunas correctamente escritas (ver `territorial::comunas()`): PIRQUE, Maipu, nunoa, La calera, prohibidencia, Penialolen, CERRILLOS, San José De Maipo y OHiggins
! Mayúsculas: 2 casos de comunas escritas en mayúsculas: PIRQUE y CERRILLOS
! Minúsculas: 2 casos de comunas escritas en minúsculas: nunoa y prohibidencia
! Mayúsculas: 1 caso de comunas con preposiciones ('de', 'del') escritas en mayúsculas: San José De Maipo
ℹ Tildes: 1 caso de comunas que deberían tener tildes y no los tienen: Maipu
ℹ Eñes: 1 caso de comunas escritas sin eñe: nunoa
ℹ Problemas comunes: 1 caso de comunas popularmente mal escritas: OHiggins
✖ Validación de comunas: se encontraron 17 problemas con las comunas! Usa `territorial::limpiar_comunas()` para solucionarlos.
Ahora sabemos qué tipo de problemas vienen en los nombres de las comunas de nuestra tabla de datos.
Luego podemos limpiar automáticamente las comunas con
limpiar_comunas(), y obtener una columna con las comunas correctamente
escritas:
datos |>
limpiar_comunas(nombre_comuna)ℹ Limpiando 10 nombres de comunas (10 son distintas)
→ Paso 1: confirmar comunas correctas
ℹ De las 10 comunas distintas, 1 ya eran correctas: El Monte
→ Paso 2: coincidencias por limpieza de texto
ℹ A partir de la limpieza de texto, se limpiaron 7 de 10 comunas: Pirque, El Monte, Maipú, Ñuñoa, Cerrillos, San José de Maipo y O'Higgins
→ Paso 3: casos especiales
ℹ Se encontró 1 caso especial: Calera
→ Paso 4: coincidencias aproximadas de texto
ℹ Se limpiaron 2 de 2 comunas por medio de coincidencias aproximadas de texto: Providencia y Peñalolén
→ Conclusión de limpieza de comunas
✔ De las 10 comunas distintas, se limpiaron 10 en total (100%)
# A tibble: 10 × 1
nombre_comuna
<chr>
1 Pirque
2 El Monte
3 Maipú
4 Ñuñoa
5 Calera
6 Providencia
7 Peñalolén
8 Cerrillos
9 San José de Maipo
10 O'Higgins
Esta función usa varias técnicas para limpiar automáticamente los nombres de las comunas y municipios de Chile. Si encuentras casos que no se limpian bien, escríbeme un issue.
Si tenemos una tabla que solamente tiene comunas, y necesitamos
agregar las variables territoriales faltantes como región,
provincia, y los códigos únicos
territoriales
de Chile (vignette(codigos_unicos_territoriales)), podemos usar
contextualizar() para agregar automáticamente todas las columnas
territoriales que falten.
datos <- dplyr::tribble(
~nombre_comuna, ~personas,
"Puente Alto", 14,
"La Florida", 23,
"La Granja", 156,
"San Joaquín", 12)datos |>
contextualizar(nombre_comuna)ℹ Columnas agregadas: codigo_region, nombre_region, codigo_provincia, nombre_provincia y codigo_comuna
# A tibble: 4 × 7
codigo_region nombre_region codigo_provincia nombre_provincia codigo_comuna
<dbl> <chr> <dbl> <chr> <dbl>
1 13 Metropolitana d… 132 Cordillera 13201
2 13 Metropolitana d… 131 Santiago 13110
3 13 Metropolitana d… 131 Santiago 13111
4 13 Metropolitana d… 131 Santiago 13129
# ℹ 2 more variables: nombre_comuna <chr>, personas <dbl>
Así, un dataframe que solamente tiene nombres de comuna o códigos únicos territoriales puede pasar a tener todas las demás variables que describen territorialmente a esos datos.
Esto es extremadamente útil para limpiar datos: solamente necesitas una
tabla con códigos únicos territoriales para aplicarle contextualizar()
y obtener la tabla completa.
Por ejemplo, la siguiente tabla:
datos <- dplyr::tribble(
~codigo_comuna, ~personas,
13201, 14,
13110, 23,
13111, 156,
13129, 12)Ahora le aplicamos contextualizar() y obtenemos una tabla con todas
las variables que describen cada territorio de manera homogénea y
estandarizada:
datos |>
contextualizar(codigo_comuna)ℹ Columnas agregadas: codigo_region, nombre_region, codigo_provincia, nombre_provincia y nombre_comuna
# A tibble: 4 × 7
codigo_region nombre_region codigo_provincia nombre_provincia codigo_comuna
<dbl> <chr> <dbl> <chr> <dbl>
1 13 Metropolitana d… 132 Cordillera 13201
2 13 Metropolitana d… 131 Santiago 13110
3 13 Metropolitana d… 131 Santiago 13111
4 13 Metropolitana d… 131 Santiago 13129
# ℹ 2 more variables: nombre_comuna <chr>, personas <dbl>
Estas son algunas de las funciones principales, pero existen muchas más que facilitan el trabajo con datos comunales y regionales de Chile: revisa el índice para verlas todas, o lee la viñeta para una guía de uso más completa.
Paquete desarrollado bajo el programa de Campeones de ROpenSci, con el apoyo de mi mentora Andrea Gómez Vargas.
Ten en cuenta que este proyecto se publica con un Código de Conducta para Colaboradores. Al contribuir a este proyecto, aceptas cumplir con sus términos.
