| Title: | Extraction and Analysis of 2022 Argentina Census Microdata from REDATAM Databases |
|---|---|
| Description: | Provides tools to extract, label, and read microdata from the 2022 National Census of Population, Households and Dwellings of Argentina stored in REDATAM databases officially distributed by INDEC. Implements a complete province-by-province extraction pipeline with efficient memory management, reconstruction of hierarchical identifiers, automatic variable labeling from official INDEC dictionaries, and integrity verification against published totals. Allows working with census data directly in R without knowledge of REDATAM syntax, and supports export to multiple formats including Parquet, CSV, SPSS and SAS. Census data must be downloaded directly from the official INDEC portal (<https://www.indec.gob.ar>). This package does not distribute census data. Duran (2026) <doi:10.32614/CRAN.package.censo2022arg>. |
| Authors: | Rodrigo Javier Duran [aut, cre] (ORCID: <https://orcid.org/0000-0002-3957-9510>), Jaime Salvador [ctb] (Autor original de red_dictionary.cpp, red_execute.cpp, red_initialize.cpp y redengine_c.h (paquete redatamx, GPL-3)), CELADE - Centro Latinoamericano y Caribeno de Demografia [cph] (Titular de derechos sobre el motor REDATAM (libredengine)) |
| Maintainer: | Rodrigo Javier Duran <[email protected]> |
| License: | GPL (>= 3) |
| Version: | 1.2.0 |
| Built: | 2026-05-22 22:07:42 UTC |
| Source: | https://github.com/rodriduran/censo2022arg |
Define el directorio donde se guardaran todos los archivos del censo: bases REDATAM, metadatos y microdatos extraidos. Es el primer paso antes de usar cualquier otra funcion del paquete.
El directorio puede estar en cualquier ubicacion - disco interno, externo o de red. El paquete en si se instala en la libreria de R del sistema; los datos quedan donde usted elija.
Al ejecutarse, la funcion crea automaticamente la estructura de carpetas necesaria y copia los archivos de control oficial del INDEC.
censo_configurar(dir, persistent = FALSE)censo_configurar(dir, persistent = FALSE)
dir |
Ruta al directorio raiz donde se guardaran todos los archivos del censo. Debe ser elegida por el usuario; el paquete no asume ninguna ubicacion por defecto. |
persistent |
Logico. Si |
La ruta configurada (invisible).
censo_info, censo_descargar,
censo_verificar_engine
## Not run: # Configurar para esta sesion unicamente censo_configurar("/home/usuario/mis_datos/censo2022") # Configurar y guardar para todas las sesiones futuras censo_configurar("/home/usuario/mis_datos/censo2022", persistent = TRUE) # En Windows censo_configurar("D:/Datos/Censo2022", persistent = TRUE) # En un disco externo (Mac/Linux) censo_configurar("/Volumes/MiDisco/Censo2022", persistent = TRUE) ## End(Not run) # Ejemplo ejecutable (usa directorio temporal): old <- getOption("censo2022.dir") censo_configurar(tempdir()) options(censo2022.dir = old) # restaurar estado anterior## Not run: # Configurar para esta sesion unicamente censo_configurar("/home/usuario/mis_datos/censo2022") # Configurar y guardar para todas las sesiones futuras censo_configurar("/home/usuario/mis_datos/censo2022", persistent = TRUE) # En Windows censo_configurar("D:/Datos/Censo2022", persistent = TRUE) # En un disco externo (Mac/Linux) censo_configurar("/Volumes/MiDisco/Censo2022", persistent = TRUE) ## End(Not run) # Ejemplo ejecutable (usa directorio temporal): old <- getOption("censo2022.dir") censo_configurar(tempdir()) options(censo2022.dir = old) # restaurar estado anterior
Descarga automaticamente desde el portal oficial del INDEC las bases de datos REDATAM, los diccionarios de variables, los cuestionarios y la documentacion metodologica del Censo 2022.
Los archivos se guardan en la estructura de directorios configurada
previamente con censo_configurar().
censo_descargar(que = "todo", overwrite = FALSE)censo_descargar(que = "todo", overwrite = FALSE)
que |
Character. Que descargar. Opciones:
Se pueden combinar: |
overwrite |
Logico. Si |
La descarga de las bases puede demorar varios minutos dependiendo de la conexion. Si el enlace no esta disponible, la funcion indica como descargar los archivos manualmente desde el sitio del INDEC.
Invisible NULL. Se ejecuta por sus efectos secundarios
(descarga de archivos al directorio configurado).
censo_configurar, extraer_redatam
## Not run: # Descargar todo (recomendado la primera vez) censo_descargar() # Solo los metadatos (mas rapido, util para probar la configuracion) censo_descargar(que = "metadatos") # Forzar re-descarga de las bases censo_descargar(que = "bases", overwrite = TRUE) ## End(Not run)## Not run: # Descargar todo (recomendado la primera vez) censo_descargar() # Solo los metadatos (mas rapido, util para probar la configuracion) censo_descargar(que = "metadatos") # Forzar re-descarga de las bases censo_descargar(que = "bases", overwrite = TRUE) ## End(Not run)
Procesa los archivos ZIP de bases y metadatos del Censo 2022 y los organiza
en los directorios internos del paquete. Detecta automaticamente cada
subcarpeta por nombre (con sinonimos) y por contenido. Si no puede
identificar alguna carpeta, la copia a censo_dir_bases() con su
nombre original e indica al usuario como renombrarla manualmente.
Los ZIPs originales se conservan. Solo se eliminan los archivos temporales generados durante el proceso.
censo_descomprimir(dir = NULL, borrar_zip = FALSE, overwrite = FALSE)censo_descomprimir(dir = NULL, borrar_zip = FALSE, overwrite = FALSE)
dir |
Character. Carpeta donde estan los ZIPs. Si es |
borrar_zip |
Logico. Si |
overwrite |
Logico. Si |
Invisible NULL.
## Not run: # ZIPs en una carpeta propia censo_descomprimir(dir = "D:/Descargas/censo") # ZIPs ya en los directorios internos del paquete censo_descomprimir() # Eliminar ZIPs al terminar censo_descomprimir(dir = "D:/Descargas/censo", borrar_zip = TRUE) ## End(Not run)## Not run: # ZIPs en una carpeta propia censo_descomprimir(dir = "D:/Descargas/censo") # ZIPs ya en los directorios internos del paquete censo_descomprimir() # Eliminar ZIPs al terminar censo_descomprimir(dir = "D:/Descargas/censo", borrar_zip = TRUE) ## End(Not run)
Aplica las etiquetas del diccionario a los archivos de microdatos
generados por extraer_redatam() o extraer_dic(). El proceso
realiza tres transformaciones sobre cada archivo:
Limpia los nombres de columna eliminando sufijos numericos
del motor REDATAM (p01_0 -> P01).
Agrega una etiqueta descriptiva a cada variable
(atributo label).
Convierte las variables categoricas a factor con las etiquetas
de sus categorias (solo con fuente "xls" o "redatam").
Las variables geograficas identificadoras no se convierten a factor.
El proceso es idempotente: si un archivo ya fue etiquetado, se omite.
censo_etiquetar( fuente_meta = "auto", dic_path = NULL, provincias = "all", bases = "all", etiquetar = "todo" )censo_etiquetar( fuente_meta = "auto", dic_path = NULL, provincias = "all", bases = "all", etiquetar = "todo" )
fuente_meta |
Character. Fuente de metadatos:
|
dic_path |
Character. Ruta al diccionario (.dicX o .rxdb).
Requerido cuando |
provincias |
Numerico, character o |
bases |
Character o |
etiquetar |
Character. Que etiquetas aplicar:
|
Invisible NULL.
extraer_redatam, extraer_dic,
censo_leer
## Not run: # Seleccion automatica de fuente (recomendado) censo_etiquetar() # Solo Formosa y Salta censo_etiquetar(provincias = c(34, 66)) # Censos anteriores con base .dicX censo_etiquetar( fuente_meta = "dic", dic_path = "D:/Censos/censo2010.dicX" ) ## End(Not run)## Not run: # Seleccion automatica de fuente (recomendado) censo_etiquetar() # Solo Formosa y Salta censo_etiquetar(provincias = c(34, 66)) # Censos anteriores con base .dicX censo_etiquetar( fuente_meta = "dic", dic_path = "D:/Censos/censo2010.dicX" ) ## End(Not run)
Presenta un resumen del estado del paquete: directorio configurado, archivos disponibles, provincias extraidas y proximos pasos sugeridos. Tambien verifica si el motor de extraccion esta correctamente preparado.
Es util para orientarse al retomar el trabajo despues de un tiempo o para diagnosticar problemas de configuracion.
censo_info()censo_info()
La ruta del directorio configurado (invisible), o NULL
si no hay configuracion activa.
censo_configurar, censo_descargar
if (nzchar(getOption("censo2022.dir", ""))) { censo_info() }if (nzchar(getOption("censo2022.dir", ""))) { censo_info() }
Lee los microdatos extraidos del Censo 2022 y los devuelve como un objeto de R listo para analizar. Permite seleccionar provincias, variables y aplicar filtros de filas sin necesidad de cargar todo el conjunto de datos en memoria.
Se recomienda ejecutar censo_etiquetar() antes de usar esta
funcion para disponer de nombres de variable legibles y categorias
correctamente etiquetadas.
censo_leer( base = "Personas", provincias = "all", columnas = NULL, filtro = NULL, formato = "data.frame", dir = NULL )censo_leer( base = "Personas", provincias = "all", columnas = NULL, filtro = NULL, formato = "data.frame", dir = NULL )
base |
Character. Base de datos a leer:
|
provincias |
Numerico, character o |
columnas |
Character o |
filtro |
Expresion o |
formato |
Character. Formato del objeto devuelto:
|
dir |
Character o |
## Filtros y seleccion de columnas
Los filtros y la seleccion de columnas se aplican usando Apache Arrow antes de cargar los datos en la memoria de R. Esto permite trabajar con subconjuntos de datos sin necesidad de disponer de la RAM suficiente para el conjunto completo.
## Estimacion de uso de memoria
Los archivos en disco estan comprimidos (formato parquet). Al cargarlos en R, el uso de RAM es aproximadamente 4-5 veces mayor que el tamano del archivo. Una provincia mediana ocupa ~50-100 MB en RAM. El pais completo puede superar los 12 GB.
Un data.frame, data.table o tibble segun
el parametro formato.
extraer_redatam, censo_etiquetar,
censo_configurar
## Not run: # Personas de Formosa df <- censo_leer(base = "Personas", provincias = 34) # Por nombre de provincia df <- censo_leer(base = "Personas", provincias = c("salta", "jujuy")) # Personas de Salta y Jujuy, solo algunas variables df <- censo_leer( base = "Personas", provincias = c(66, 38), columnas = c("P01", "EDAD", "CONDACT", "IDRADIO") ) # Personas mayores de 18 anos de Cordoba df <- censo_leer( base = "Personas", provincias = 14, filtro = quote(EDAD >= 18) ) # Hogares de todo el pais como data.table dt <- censo_leer(base = "Hogares", formato = "data.table") ## End(Not run)## Not run: # Personas de Formosa df <- censo_leer(base = "Personas", provincias = 34) # Por nombre de provincia df <- censo_leer(base = "Personas", provincias = c("salta", "jujuy")) # Personas de Salta y Jujuy, solo algunas variables df <- censo_leer( base = "Personas", provincias = c(66, 38), columnas = c("P01", "EDAD", "CONDACT", "IDRADIO") ) # Personas mayores de 18 anos de Cordoba df <- censo_leer( base = "Personas", provincias = 14, filtro = quote(EDAD >= 18) ) # Hogares de todo el pais como data.table dt <- censo_leer(base = "Hogares", formato = "data.table") ## End(Not run)
Verifica si el motor de extraccion esta correctamente preparado para trabajar con el Censo 2022. Si no lo esta, muestra las instrucciones paso a paso para prepararlo segun su sistema operativo.
Por que es necesario este paso?
El motor REDATAM (libredengine, desarrollado por CELADE/CEPAL) tiene un limite interno que restringe la extraccion a 100 registros por consulta. Este limite fue disenado para uso interactivo del software REDATAM, no para la extraccion masiva de microdatos. Para poder extraer los 44 millones de registros del censo, es necesario ampliar ese limite aplicando una modificacion puntual al archivo del motor.
Esta modificacion es de bajo nivel (unos pocos bytes en el binario compilado) y no afecta ninguna otra funcionalidad. Debe realizarse una sola vez, y puede revertirse en cualquier momento usando la copia de seguridad que la funcion indica crear.
Si el motor no esta presente, la funcion ofrece descargarlo automaticamente desde el repositorio oficial del paquete (~28 MB). Si se detecta una version incompatible, ofrece reemplazarla automaticamente por la version requerida (1.2.1-final).
censo_verificar_engine()censo_verificar_engine()
Invisible TRUE si el motor esta listo, FALSE
si requiere preparacion.
censo_configurar, extraer_redatam
censo_verificar_engine()censo_verificar_engine()
Extrae microdatos desde cualquier base REDATAM en formato .dicX o .rxdb,
incluyendo bases de censos anteriores (2001, 2010) o bases alternativas
al formato oficial del INDEC. Detecta automaticamente la jerarquia y las
entidades disponibles, y produce archivos en el mismo formato que
extraer_redatam().
A diferencia de extraer_redatam(), que filtra por provincia durante
la extraccion, esta funcion extrae cada bloque completo y luego lo divide
por provincia en R. Esto es necesario porque el motor no soporta filtrado
nativo con formatos .dicX.
extraer_dic( dic_path = NULL, entidades = "todas", provincias = "all", formatos = "parquet", max_por_bloque = 10, output_dir = NULL )extraer_dic( dic_path = NULL, entidades = "todas", provincias = "all", formatos = "parquet", max_por_bloque = 10, output_dir = NULL )
dic_path |
Character. Ruta al archivo de diccionario (.dicX o .rxdb). |
entidades |
Character. Entidades a extraer. Puede ser |
provincias |
Numerico, character o |
formatos |
Character. Formato de salida. Default |
max_por_bloque |
Integer. Variables por bloque de extraccion.
Default |
output_dir |
Character. Directorio de salida. Si es |
Invisible. Lista con fallidas y log.
extraer_redatam, censo_etiquetar
## Not run: # Extraer todas las entidades de una base .dicX extraer_dic(dic_path = "D:/Censos/CNPV2022-AR/CPV2022.dicX") # Solo personas de Salta extraer_dic( dic_path = "D:/Censos/CNPV2022-AR/CPV2022.dicX", entidades = "PERSONA", provincias = 66 ) # Censo 2010 extraer_dic(dic_path = "/ruta/al/censo2010.dicX") ## End(Not run)## Not run: # Extraer todas las entidades de una base .dicX extraer_dic(dic_path = "D:/Censos/CNPV2022-AR/CPV2022.dicX") # Solo personas de Salta extraer_dic( dic_path = "D:/Censos/CNPV2022-AR/CPV2022.dicX", entidades = "PERSONA", provincias = 66 ) # Censo 2010 extraer_dic(dic_path = "/ruta/al/censo2010.dicX") ## End(Not run)
Extrae los microdatos completos del Censo 2022 desde las bases REDATAM del INDEC, provincia por provincia, con verificacion automatica de integridad contra los totales oficiales publicados.
Para cada provincia genera cinco archivos:
provincia_PO_VP.parquet - base completa (una fila por persona)
provincia_Personas.parquet - variables de persona
provincia_Hogares.parquet - variables de hogar
provincia_Viviendas.parquet - variables de vivienda
provincia_colectivas.parquet - viviendas colectivas
La extraccion es retomable: si se interrumpe, al volver a ejecutar continua desde donde quedo sin repetir lo ya procesado.
extraer_redatam( provincias = "all", formatos = "parquet", max_por_bloque = 10, dic_path_vp = NULL, dic_path_po = NULL, dic_path_vc = NULL, output_dir = NULL, control_dir = NULL )extraer_redatam( provincias = "all", formatos = "parquet", max_por_bloque = 10, dic_path_vp = NULL, dic_path_po = NULL, dic_path_vc = NULL, output_dir = NULL, control_dir = NULL )
provincias |
Numerico, character o |
formatos |
Character. Formato de salida de los archivos.
Default |
max_por_bloque |
Integer. Numero maximo de variables por bloque de extraccion. Default 10. Reducir en equipos con poca memoria RAM. |
dic_path_vp |
Character. Ruta al archivo .rxdb de la Base VP.
Si es |
dic_path_po |
Character. Ruta al archivo .rxdb de la Base PO.
Si es |
dic_path_vc |
Character. Ruta al archivo .rxdb de la Base VC.
Si es |
output_dir |
Character. Directorio de salida para los microdatos.
Si es |
control_dir |
Character. Directorio con los archivos de control
del INDEC para verificacion. Si es |
## Bases del Censo 2022
El INDEC distribuyo tres bases complementarias:
VP (Viviendas Particulares): contiene las variables principales e incluye los niveles geograficos de fraccion y radio censal, necesarios para analisis a nivel de radio.
PO (Pueblos Originarios, Afrodescendientes e Identidad de Genero): agrega seis variables sensibles no incluidas en VP. No incluye fraccion ni radio censal.
VC (Viviendas Colectivas): personas en establecimientos colectivos (hospitales, carceles, etc.).
La base extraida combina VP y PO, obteniendo el radio censal de VP y las seis variables adicionales de PO.
## Gestion de memoria
Cada bloque se extrae en un subproceso Rscript independiente. Esto evita la acumulacion de memoria del motor REDATAM en la sesion principal de R. El proceso maestro solo lee los archivos intermedios desde disco y los une en memoria.
Invisible. Una lista con los elementos:
fallidas (provincias con errores) y log (ruta al log).
censo_configurar para configurar las rutas,
censo_etiquetar para etiquetar los archivos generados,
censo_leer para leer los microdatos extraidos.
## Not run: # Extraer todas las provincias extraer_redatam() # Solo Formosa (prueba rapida) extraer_redatam(provincias = 34) # Salta y Jujuy, exportando tambien a CSV extraer_redatam(provincias = c(66, 38), formatos = c("parquet", "csv")) ## End(Not run)## Not run: # Extraer todas las provincias extraer_redatam() # Solo Formosa (prueba rapida) extraer_redatam(provincias = 34) # Salta y Jujuy, exportando tambien a CSV extraer_redatam(provincias = c(66, 38), formatos = c("parquet", "csv")) ## End(Not run)
Convierte una base de datos en formato RedatamX (.rxdb) a un archivo de salida con todos sus microdatos, sin asumir ninguna estructura predefinida de variables, entidades ni jerarquia geografica.
La funcion detecta automaticamente la entidad mas granular de la jerarquia (entidad hoja), construye bloques de variables dinamicamente desde el diccionario, y extrae cada bloque en un subproceso independiente para una gestion eficiente de la memoria RAM.
Para el Censo Argentina 2022, utilice extraer_redatam,
que incluye filtrado provincial, reconstruccion de identificadores
jerarquicos y verificacion de integridad.
extraer_rxdb( dic_path, output_file = NULL, max_por_bloque = 10, formato = "parquet", verbose = TRUE )extraer_rxdb( dic_path, output_file = NULL, max_por_bloque = 10, formato = "parquet", verbose = TRUE )
dic_path |
Character. Ruta al archivo de diccionario (.rxdb). |
output_file |
Character. Ruta al archivo de salida. Si es
|
max_por_bloque |
Integer. Numero maximo de variables por bloque de extraccion. Default 10. Reducir en equipos con poca memoria RAM. |
formato |
Character. Formato de salida: |
verbose |
Logico. Si |
## Requisito previo
Requiere el motor RedatamX con el limite de extraccion ampliado.
Verifique el estado del motor con censo_verificar_engine()
antes de usar esta funcion.
## Compatibilidad
Compatible con bases en formato .rxdb (RedatamX). No es compatible con el formato Redatam7 (.dicx + .rbf), utilizado por censos como el de Ecuador 2022.
## Gestion de memoria
La extraccion se realiza en bloques de max_por_bloque variables.
Cada bloque se procesa en un subproceso Rscript independiente que
libera la memoria del motor C++ al finalizar. El proceso principal
solo une los bloques leidos desde disco.
## Paises con bases RedatamX conocidas (ronda 2020)
Argentina 2022: usar extraer_redatam() para
el pipeline completo.
Guatemala, Mexico, Bolivia: compatibilidad pendiente de verificacion.
Invisible. La ruta al archivo generado.
extraer_redatam para el Censo Argentina 2022,
censo_verificar_engine para verificar el motor.
## Not run: # Uso basico: convertir cualquier base .rxdb a parquet extraer_rxdb( dic_path = "/ruta/a/base.rxdb", output_file = "/ruta/salida/microdatos.parquet" ) # Con bloques mas pequenos para equipos con poca memoria RAM extraer_rxdb( dic_path = "/ruta/a/base.rxdb", output_file = "/ruta/salida/microdatos.parquet", max_por_bloque = 5 ) ## End(Not run)## Not run: # Uso basico: convertir cualquier base .rxdb a parquet extraer_rxdb( dic_path = "/ruta/a/base.rxdb", output_file = "/ruta/salida/microdatos.parquet" ) # Con bloques mas pequenos para equipos con poca memoria RAM extraer_rxdb( dic_path = "/ruta/a/base.rxdb", output_file = "/ruta/salida/microdatos.parquet", max_por_bloque = 5 ) ## End(Not run)
Cerrar un diccionario REDATAM
redatam_close(dic)redatam_close(dic)
dic |
Objeto diccionario retornado por |
Invisible NULL.
## Not run: dic <- redatam_open("/ruta/a/base.rxdb") redatam_close(dic) ## End(Not run)## Not run: dic <- redatam_open("/ruta/a/base.rxdb") redatam_close(dic) ## End(Not run)
Listar entidades de un diccionario REDATAM
redatam_entities(dic)redatam_entities(dic)
dic |
Objeto diccionario retornado por |
Data frame con las entidades del diccionario.
## Not run: dic <- redatam_open("/ruta/a/base.rxdb") redatam_entities(dic) redatam_close(dic) ## End(Not run)## Not run: dic <- redatam_open("/ruta/a/base.rxdb") redatam_entities(dic) redatam_close(dic) ## End(Not run)
Abrir un diccionario REDATAM
redatam_open(dictionary_name)redatam_open(dictionary_name)
dictionary_name |
Character. Ruta al archivo de diccionario (.rxdb o .dicX). |
Objeto externo que representa el diccionario abierto.
## Not run: dic <- redatam_open("/ruta/a/base.rxdb") redatam_close(dic) ## End(Not run)## Not run: dic <- redatam_open("/ruta/a/base.rxdb") redatam_close(dic) ## End(Not run)
Ejecutar una consulta REDATAM
redatam_query(dic, spc, tot.omit = TRUE)redatam_query(dic, spc, tot.omit = TRUE)
dic |
Objeto diccionario retornado por |
spc |
Character. Consulta en sintaxis REDATAM. |
tot.omit |
Logico. Si |
Data frame con el resultado de la consulta.
## Not run: dic <- redatam_open("/ruta/a/base.rxdb") redatam_query(dic, "FREQ PERSONA.P01") redatam_close(dic) ## End(Not run)## Not run: dic <- redatam_open("/ruta/a/base.rxdb") redatam_query(dic, "FREQ PERSONA.P01") redatam_close(dic) ## End(Not run)
Ejecutar un programa REDATAM desde archivo
redatam_run(dic, file_name, tot.omit = TRUE)redatam_run(dic, file_name, tot.omit = TRUE)
dic |
Objeto diccionario retornado por |
file_name |
Character. Ruta al archivo .spc con el programa. |
tot.omit |
Logico. Si |
Data frame con el resultado de la ejecucion.
## Not run: dic <- redatam_open("/ruta/a/base.rxdb") redatam_run(dic, "/ruta/a/programa.spc") redatam_close(dic) ## End(Not run)## Not run: dic <- redatam_open("/ruta/a/base.rxdb") redatam_run(dic, "/ruta/a/programa.spc") redatam_close(dic) ## End(Not run)
Listar variables de una entidad REDATAM
redatam_variables(dic, entity_name)redatam_variables(dic, entity_name)
dic |
Objeto diccionario retornado por |
entity_name |
Character. Nombre de la entidad. |
Data frame con las variables de la entidad.
## Not run: dic <- redatam_open("/ruta/a/base.rxdb") redatam_variables(dic, "PERSONA") redatam_close(dic) ## End(Not run)## Not run: dic <- redatam_open("/ruta/a/base.rxdb") redatam_variables(dic, "PERSONA") redatam_close(dic) ## End(Not run)