Ir al contenido

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:

Revisa la viñeta vignette("territorial") para una introducción al paquete!

Instalación

Puedes instalar la versión de desarrollo este paquete desde GitHub:

# install.packages("pak")
pak::pak("bastianolea/territorial")

Usando {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.

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",
                    "santiago", "prohibidencia", "CERRILLOS", 
                    "San José De Maipo", "OHiggins"))

datos
# A tibble: 9 × 1
  nombre_comuna    
  <chr>            
1 PIRQUE           
2 El Monte         
3 Maipu            
4 nunoa            
5 santiago         
6 prohibidencia    
7 CERRILLOS        
8 San José De Maipo
9 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: 8 casos de comunas que no conciden con comunas correctamente escritas (ver `territorial::comunas()`): PIRQUE, Maipu, nunoa, santiago, prohibidencia, CERRILLOS, San José De Maipo y OHiggins

! Mayúsculas: 2 casos de comunas escritas en mayúsculas: PIRQUE y CERRILLOS

! Minúsculas: 3 casos de comunas escritas en minúsculas: nunoa, santiago 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 9 nombres de comunas (9 son distintas)

── Paso 1: confirmar comunas correctas 

ℹ De las 9 comunas distintas, 1 ya eran correctas: El Monte

── Paso 2: coincidencias por limpieza de texto 

ℹ A partir de la limpieza de texto, se limpiaron 8 de 9 comunas: Pirque, El Monte, Maipú, Ñuñoa, Santiago, Cerrillos, San José de Maipo y O'Higgins

── Paso 3: casos especiales 

ℹ Se encontraron 0 casos especiales: 

── Paso 4: coincidencias aproximadas de texto 

ℹ Se limpiaron 1 de 1 comunas por medio de coincidencias aproximadas de texto: Providencia

── Conclusión de limpieza de comunas 

✔ De las 9 comunas distintas, se limpiaron 9 en total (100%)

# A tibble: 9 × 1
  nombre_comuna    
  <chr>            
1 Pirque           
2 El Monte         
3 Maipú            
4 Ñuñoa            
5 Santiago         
6 Providencia      
7 Cerrillos        
8 San José de Maipo
9 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 territoriales de Chile: revisa el índice!

Código de conducta

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.


Paquete desarrollado bajo el programa de Campeones de ROpenSci, con el apoyo de mi mentora Andrea Gómez Vargas