{poblador}: datos de población de Chile y funciones para agregar datos poblacionales fácilmente
Complementa tablas de datos territoriales agregando población de distintos Censos y fuentes oficiales de manera automática
13/11/2026
Les presento mi nuevo paquete de R, {poblador}: una solución para complementar datos territoriales de Chile con cifras de población oficiales.
El paquete se basa en una serie de tablas de datos de población oficiales, preprocesados a nivel comunal, que puedes revisar con poblador::catalogo().
Para cualquier tabla de datos con comunas o regiones de Chile, simplemente le aplicas agregar_poblacion() y listo, se crea la columna poblacion con los habitantes correspondientes a la proyección censal para el año actual. Si necesitas agregar la población del nuevo Censo 2024, agregar_poblacion(base = censo_poblacion_2024).
También puedes obtener las cifras de población de territorios puntuales con obtener_poblacion("Puente Alto"), así de simple! Muy útil para reportes automatizados, redacción de textos parametrizados, o aplicaciones web.
Las funciones del paquete infieren automáticamente si tus datos son comunales, regionales o nacionales, y funcionan sobre nombres de territorios o sus códigos únicos (CUT),
gracias al paquete {territorial}.
Más información, documentación y ejemplos con datos reales en el sitio del paquete
Este paquete ofrece tablas de datos de población desde fuentes oficiales de Chile, como censo_poblacion_2024, así como funciones para simplificar el uso de estos datos como complemento a otros conjuntos de datos, como para agregar población oficial a una tabla de comunas o regiones con agregar_poblacion(), entre otras.
El funcionamiento interno de este paquete depende bastante del
paquete {territorial}, que entrega herramientas para trabajar con datos que representan comunas y regiones de Chile.
Instalación
Instala el paquete a R desde R-Universe:
install.packages('poblador', repos = c('https://bastianolea.r-universe.dev'))
También puedes instalar desde GitHub:
# install.packages("pak")
pak::pak("bastianolea/poblador")
Para que {poblador} funcione, necesitas
tener instalado {territorial}. Si no lo tienes, instálalo con:
install.packages("territorial", repos = "https://bastianolea.r-universe.dev")
Datos de población
Uno de los aspectos principales de {poblador} es que contiene bases de datos de población procesadas
a partir de las fuentes oficiales a nivel comunal. Las principales son los últimos dos Censos de población (2017 y 2024), junto a las proyecciones de población oficiales (en base al Censo 2017).
La función catalogo() te muestra todas las fuentes de datos disponibles en el paquete, incluído el nombre que tienen para cargarlas en R, sus características y fuentes:
library(poblador)
catalogo()
Ver el catálogo de datos generado por catalogo()
── Datos disponibles en poblador ───────────────────────────────────────────────
── Población a nivel comunal de Chile (2017) ──
• Objeto: `censo_poblacion_2017`
• Tabla de 346 y 8 columnas
• Años: 2017
• Cantidad de comunas únicas: 346
• Fuente: Instituto Nacional de Estadísticas de Chile (INE),
<https://www.ine.gob.cl/estadisticas-por-tema/demografia-y-poblacion/censo-de-poblacion-y-vivienda>
── Población censada a nivel comunal de Chile (2024) ──
• Objeto: `censo_poblacion_2024`
• Tabla de 346 y 8 columnas
• Años: 2024
• Cantidad de comunas únicas: 346
• Fuente: Instituto Nacional de Estadísticas de Chile (INE),
<https://censo2024.ine.gob.cl/resultados/>
── Proyecciones de población a nivel comunal de Chile (2002-2035), base Censo 2017 ──
• Objeto: `censo_poblacion_proyeccion`
• Tabla de 11764 y 8 columnas
• Las proyecciones de población proporcionan una referencia del futuro tamaño y
estructura por edades de una población, basados en un conjunto de supuestos
sobre el comportamiento de los componentes demográficos fecundidad, mortalidad
y migración. Son un insumo fundamental para la planificación y la toma de
decisiones tanto para el sector público como el privado, dado que permiten
anticipar demandas futuras e identificar desafíos que surgen como consecuencia
de los cambios demográficos.
• Años: entre 2002 y 2035
• Cantidad de comunas únicas: 346
• Fuente: Instituto Nacional de Estadísticas de Chile (INE),
<https://www.ine.gob.cl/estadisticas-por-tema/demografia-y-poblacion/estimaciones-y-proyecciones-de-poblacion>
── Población en situación de pobreza por ingresos a nivel comunal (2024) ──
• Objeto: `mideso_pobreza_ingresos`
• Tabla de 345 y 8 columnas
• Cifras de población en situación de pobreza, calculadas por el Ministerio de
Desarrollo Social y Familia a partir de datos de la Encuesta de Caracterización
Socioeconómica Nacional 2024 (Casen 2024), por medio de la aplicación de la
metodología de áreas pequeñas o SAE.
• Años: 2024
• Cantidad de comunas únicas: 345
• Fuente: Ministerio de Desarrollo Social y Familia (Mideso),
<https://bidat.gob.cl/details/ficha/dataset/base-de-datos-pobreza-comunal-2024>
── Población en situación de pobreza multidimensional a nivel comunal (2024) ──
• Objeto: `mideso_pobreza_multi`
• Tabla de 345 y 8 columnas
• Cifras de población en situación de pobreza, calculadas por el Ministerio de
Desarrollo Social y Familia a partir de datos de la Encuesta de Caracterización
Socioeconómica Nacional 2024 (Casen 2024), por medio de la aplicación de la
metodología de áreas pequeñas o SAE. La medición de pobreza multidimensional se
calcula a partir de 5 dimensiones, cada una con 4 indicadores: Educación,
Salud, Trabajo y Seguridad Social, Vivienda y Entorno, y Redes y Cohesión
Social.
• Años: 2024
• Cantidad de comunas únicas: 345
• Fuente: Ministerio de Desarrollo Social y Familia (Mideso),
<https://bidat.gob.cl/details/ficha/dataset/base-de-datos-pobreza-comunal-2024>
Luego de consultar catalogo(), vemos que la tabla del Censo 2024 se llama censo_poblacion_2024, así que podemos explorarla:
library(dplyr)
censo_poblacion_2024 |>
head() |>
glimpse()
Rows: 6
Columns: 8
$ codigo_region <dbl> 1, 1, 1, 1, 1, 1
$ nombre_region <chr> "Tarapacá", "Tarapacá", "Tarapacá", "Tarapacá", "Tara…
$ codigo_provincia <dbl> 11, 11, 14, 14, 14, 14
$ nombre_provincia <chr> "Iquique", "Iquique", "Tamarugal", "Tamarugal", "Tama…
$ codigo_comuna <dbl> 1101, 1107, 1401, 1405, 1404, 1402
$ nombre_comuna <chr> "Iquique", "Alto Hospicio", "Pozo Almonte", "Pica", "…
$ año <dbl> 2024, 2024, 2024, 2024, 2024, 2024
$ poblacion <int> 199587, 142086, 16878, 6272, 2858, 1335
Puedes usar estas fuentes de datos para consularlas,
cruzarlas con otras tablas, o su uso principal, que es usarlas para alimentar a la función agregar_poblacion(), como veremos a continuación.
Todas las tablas de datos del paquete siguen esta estructura de
codigo_region, nombre_region, codigo_comuna y nombre_comuna (heredada del
paquete {territorial}), además de contener año y poblacion.
Agregar población a tus datos
El fuerte de {poblador} es agregar datos de población a otras fuentes de datos con las que trabajes. La función agregar_poblacion() recibe una tabla de datos o dataframe y le agrega una columna poblacion con los datos oficiales de población.
Para probar agregar_poblacion(), creemos una tabla de datos de nivel comunal como ejemplo.
Ver código de tabla
library(dplyr)
comunas <- tibble::tribble(
~nombre_comuna, ~codigo_comuna,
"La Florida", 13110,
"Puente Alto", 13201,
"La Pintana", 13112,
"San Joaquín", 13129
)
comunas
# A tibble: 4 × 2
nombre_comuna codigo_comuna
<chr> <dbl>
1 La Florida 13110
2 Puente Alto 13201
3 La Pintana 13112
4 San Joaquín 13129
Ahora, a estos datos de ejemplo les agregamos la población que corresponde a cada fila:
library(poblador)
comunas |>
agregar_poblacion()
# A tibble: 4 × 3
nombre_comuna codigo_comuna poblacion
<chr> <dbl> <dbl>
1 La Florida 13110 408195
2 Puente Alto 13201 674064
3 La Pintana 13112 188629
4 San Joaquín 13129 102504
Así de simple! La tabla recibió una columna con la población oficial, descrita por el mensaje en la consola. La función detectó automáticamente que se trataba de datos comunales (por la presencia de las columnas codigo_comuna o nombre_comuna, y por defecto agregó la población del año actual.
Por defecto, la población se obtiene de las
proyecciones oficiales del INE (ver poblador::censo_poblacion_proyeccion). Esto significa que puedes agregar datos de cualquier otro año, por ejemplo, del año 2020:
comunas |>
agregar_poblacion(
nivel = "comunal",
años = 2020)
# A tibble: 4 × 3
nombre_comuna codigo_comuna poblacion
<chr> <dbl> <dbl>
1 La Florida 13110 402433
2 Puente Alto 13201 645909
3 La Pintana 13112 189335
4 San Joaquín 13129 103485
Datos regionales
Como vimos antes, las funciones de {poblador} detectan automáticamente el nivel de los datos. Probemos ahora con datos regionales, creando una nueva tabla de ejemplo.
Ver código de tabla
regiones <- tibble::tribble(
~nombre_region, ~codigo_region,
"Maule", 7,
"Ñuble", 16,
"Biobío", 8,
"La Araucanía", 9
)
regiones
# A tibble: 4 × 2
nombre_region codigo_region
<chr> <dbl>
1 Maule 7
2 Ñuble 16
3 Biobío 8
4 La Araucanía 9
A esta nueva tabla de datos le agregamos la población con agregar_poblacion():
regiones |>
agregar_poblacion()
# A tibble: 4 × 3
nombre_region codigo_region poblacion
<chr> <dbl> <dbl>
1 Maule 7 1189907
2 Ñuble 16 525925
3 Biobío 8 1694602
4 La Araucanía 9 1039468
Nuevamente el nivel territorial se asume automático.
Población desde otras fuentes
El argumento base de agregar_poblacion() permite usar otras fuentes de datos de población, ya sean las incluídas en el paquete (ver catalogo()), o incluso tus propias tablas de población (que sigan las convenciones del paquete).
Probemos agregando a la tabla de regiones los datos de un Censo oficial específico, en este caso del Censo 2017 (disponible en el objeto censo_poblacion_2017):
regiones |>
agregar_poblacion(
nivel = "regional",
base = censo_poblacion_2017)
# A tibble: 4 × 3
nombre_region codigo_region poblacion
<chr> <dbl> <dbl>
1 Maule 7 1044950
2 Ñuble 16 480609
3 Biobío 8 1556805
4 La Araucanía 9 957224
Como las tablas de datos usadas por {poblador} vienen en nivel comunal, al procesar datos regionales, agregar_poblacion() toma los datos comunales y los suma para obtener los regionales.
Datos socioeconómicos
Entre las distintas bases de datos incluídas, el paquete incluye datos socioeconómicos, como las estimaciones de pobreza a nivel comunal en las tablas mideso_pobreza_ingresos y mideso_pobreza_multi (usa poblador::catalogo() para ver todas las bases).
Por ejemplo:
mideso_pobreza_ingresos
# A tibble: 345 × 8
codigo_region nombre_region codigo_provincia nombre_provincia codigo_comuna
<dbl> <chr> <dbl> <chr> <dbl>
1 1 Tarapacá 11 Iquique 1101
2 1 Tarapacá 11 Iquique 1107
3 1 Tarapacá 14 Tamarugal 1401
4 1 Tarapacá 14 Tamarugal 1402
5 1 Tarapacá 14 Tamarugal 1403
6 1 Tarapacá 14 Tamarugal 1404
7 1 Tarapacá 14 Tamarugal 1405
8 2 Antofagasta 21 Antofagasta 2101
9 2 Antofagasta 21 Antofagasta 2102
10 2 Antofagasta 21 Antofagasta 2103
# ℹ 335 more rows
# ℹ 3 more variables: nombre_comuna <chr>, año <dbl>, poblacion <dbl>
Creemos una tabla de comunas de ejemplo para probar los datos socioeconómicos.
Ver código de tabla
library(dplyr)
comunas <- tibble::tribble(
~nombre_comuna, ~codigo_comuna,
"La Florida", 13110,
"Puente Alto", 13201,
"La Pintana", 13112,
"Las Condes", 13114
)
comunas
# A tibble: 4 × 2
nombre_comuna codigo_comuna
<chr> <dbl>
1 La Florida 13110
2 Puente Alto 13201
3 La Pintana 13112
4 Las Condes 13114
Para usar las bases de datos socioeconómicos, simplemente las agregamos al argumento base de agregar_poblacion() o de obtener_poblacion():
comunas |>
agregar_poblacion(base = mideso_pobreza_ingresos)
# A tibble: 4 × 3
nombre_comuna codigo_comuna poblacion
<chr> <dbl> <dbl>
1 La Florida 13110 48429.
2 Puente Alto 13201 92515.
3 La Pintana 13112 44008.
4 Las Condes 13114 9558.
En este ejemplo agregamos la población comunal estimada de habitantes en situación de pobreza por ingresos, según la encuesta Casen.
Si usamos agregar_poblacion() consecutivamente, podemos agregar tanto la población comunal como la población en situación de pobreza, a partir de lo cual podemos calcular el porcentaje de pobreza en pocas líneas:
comunas |>
# agregar habitantes en 2024
agregar_poblacion(
base = censo_poblacion_2024) |>
# agregar población en situación de pobreza
agregar_poblacion(
base = mideso_pobreza_ingresos,
nombre = "pobreza") |>
# calcular porcentaje
mutate(porcentaje = (pobreza/poblacion)*100)
# A tibble: 4 × 5
nombre_comuna codigo_comuna poblacion pobreza porcentaje
<chr> <dbl> <int> <dbl> <dbl>
1 La Florida 13110 374836 48429. 12.9
2 Puente Alto 13201 568086 92515. 16.3
3 La Pintana 13112 175421 44008. 25.1
4 Las Condes 13114 296134 9558. 3.23
Obtener población de territorios
También se puede obtener la población de territorios específicos con obtener_poblacion(). Funciona casi idéntico a agregar_poblacion(), sólo que sobre vectores de datos como nombres o códigos territoriales.
De esta manera podemos obtener fácilmente la población de una o varias comunas (notando que la función infiere automáticamente que se trata de comunas):
obtener_poblacion("La Florida")
[1] 408195
También podemos entregar códigos únicos territoriales:
obtener_poblacion(c(13102, 13201))
[1] 90328 674064
Esta forma de obtener datos de población sirve principalmente para reportes Quarto o aplicaciones Shiny; por ejemplo, en la redacción de un párrafo basado en datos:
comuna <- "Ñuñoa"
glue::glue("La comuna de {comuna} tiene una población de {obtener_poblacion(comuna)} habitantes.")
La comuna de Ñuñoa tiene una población de 274180 habitantes.
Al igual que con agregar_poblacion(), al basarse por defecto en las proyecciones de población del INE se puede solicitar la proyección de población de cualquier territorio en un año específico:
obtener_poblacion("La Florida", años = 2030)
[1] 409368
También puedes usar obtener_poblacion() dentro de mutate() al crear o modificar columnas de un dataframe:
Ver código de tabla
library(dplyr)
comunas <- territorial::territorios |>
filter(codigo_region == 15) |>
select(nombre_comuna, codigo_comuna)
comunas |>
mutate(poblacion = obtener_poblacion(codigo_comuna, años = 2027))
# A tibble: 4 × 3
nombre_comuna codigo_comuna poblacion
<chr> <dbl> <dbl>
1 Arica 15101 262679
2 Camarones 15102 1251
3 Putre 15201 2594
4 General Lagos 15202 791
