# Cargar las librerías
library(haven)
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.2.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(haven)
library(tools) # Para manejar nombres de archivos
# Listar archivos .sav en el directorio actual
archivos_sav <- list.files(pattern = "\\.sav$", full.names = TRUE)
# Cargar los archivos en una lista
lista_datos <- lapply(archivos_sav, read_sav)
# Asignar nombres a la lista sin la extensión .sav
names(lista_datos) <- file_path_sans_ext(basename(archivos_sav))
# Cargar cada elemento de la lista como un objeto en el entorno global
list2env(lista_datos, envir = .GlobalEnv)
## <environment: R_GlobalEnv>
library(labelled)
# Crear una lista para almacenar las tablas de cada archivo
lista_tablas <- list()
# Generar la tabla para cada archivo
for (i in seq_along(lista_datos)) {
df <- lista_datos[[i]] # Extraer el data frame
nombre_archivo <- names(lista_datos)[i] # Nombre del archivo sin extensión
# Extraer etiquetas y asegurarse de que todas las variables tengan una descripción
etiquetas <- var_label(df)
# Si una variable no tiene etiqueta, asignarle un valor vacío
etiquetas_completas <- sapply(names(df), function(var) {
if (!is.null(etiquetas[[var]])) etiquetas[[var]] else ""
})
# Crear la tabla con las columnas requeridas
tabla <- data.frame(
Variable = names(df), # Nombre de la variable
Descripcion = etiquetas_completas, # Etiqueta asociada o vacío si no hay
No_Missing = colSums(!is.na(df)) # Cantidad de valores no faltantes
)
# Guardar la tabla en la lista con el nombre del archivo
lista_tablas[[nombre_archivo]] <- tabla
# Crear una variable con la tabla en el entorno global
assign(paste0(nombre_archivo, "_tabla"), tabla, envir = .GlobalEnv)
}
library(haven)
library(labelled) # Necesario para usar var_label()
# Crear una lista para almacenar las tablas de cada archivo
lista_tablas <- list()
# Generar la tabla para cada archivo
for (i in seq_along(lista_datos)) {
df <- lista_datos[[i]] # Extraer el data frame
nombre_archivo <- names(lista_datos)[i] # Nombre del archivo sin extensión
# Extraer etiquetas y asegurarse de que todas las variables tengan una descripción
etiquetas <- var_label(df)
# Si una variable no tiene etiqueta, asignarle un valor vacío
etiquetas_completas <- sapply(names(df), function(var) {
if (!is.null(etiquetas[[var]])) etiquetas[[var]] else ""
})
# Crear la tabla con las columnas requeridas
tabla <- data.frame(
Variable = names(df), # Nombre de la variable
Descripcion = etiquetas_completas, # Etiqueta asociada o vacío si no hay
No_Missing = colSums(!is.na(df)) # Cantidad de valores no faltantes
)
# Guardar la tabla en la lista con el nombre del archivo
lista_tablas[[nombre_archivo]] <- tabla
# Crear una variable con la tabla en el entorno global
assign(paste0(nombre_archivo, "_tabla"), tabla, envir = .GlobalEnv)
}
RESUMEN DE LAS VARIABLES
library(dplyr)
# Unir todas las tablas en una sola
tabla_completa <- bind_rows(lista_tablas, .id = "Archivo")
# Ver la tabla final
head(tabla_completa)
## Archivo Variable Descripcion No_Missing
## EDICION...1 BDSEC0 EDICION 21413
## LOTE...2 BDSEC0 LOTE 21413
## TIPO...3 BDSEC0 TIPO 21413
## FOLIO...4 BDSEC0 FOLIO 21413
## VIV...5 BDSEC0 VIV 21413
## R01A BDSEC0 R01A Algun miembro esta en el extranjero 21413
TABLA DE GASTOS
library(dplyr)
tabla_gastos <- tabla_completa %>%
filter(grepl("gasto", Descripcion, ignore.case = TRUE))
# Ver la tabla filtrada
print(tabla_gastos)
## Archivo Variable
## GHALI BDSEC00 GHALI
## GHASE BDSEC00 GHASE
## GHUL6 BDSEC00 GHUL6
## GHU12 BDSEC00 GHU12
## GMED BDSEC00 GMED
## GMVI BDSEC00 GMVI
## GMEM BDSEC00 GMEM
## GMSA BDSEC00 GMSA
## GTMH BDSEC00 GTMH
## R2231 BDSEC02 R2231
## R223A1 BDSEC02 R223A1
## R223A2 BDSEC02 R223A2
## R223B1 BDSEC02 R223B1
## R223B2 BDSEC02 R223B2
## R223C1 BDSEC02 R223C1
## R223C2 BDSEC02 R223C2
## R223D1 BDSEC02 R223D1
## R223D2 BDSEC02 R223D2
## R223E1 BDSEC02 R223E1
## R223E2 BDSEC02 R223E2
## R2241 BDSEC02 R2241
## R2242 BDSEC02 R2242
## R2243 BDSEC02 R2243
## R224A1 BDSEC02 R224A1
## R224A2 BDSEC02 R224A2
## R224A3 BDSEC02 R224A3
## R224B1 BDSEC02 R224B1
## R224B2 BDSEC02 R224B2
## R224B3 BDSEC02 R224B3
## R224C1 BDSEC02 R224C1
## R224C2 BDSEC02 R224C2
## R224C3 BDSEC02 R224C3
## R33101B BDSEC03 R33101B
## R33102B BDSEC03 R33102B
## R33103B BDSEC03 R33103B
## R33104B BDSEC03 R33104B
## R33105B BDSEC03 R33105B
## R33106B BDSEC03 R33106B
## R33107B BDSEC03 R33107B
## R33108B BDSEC03 R33108B
## R33109B BDSEC03 R33109B
## R33110B BDSEC03 R33110B
## R33111B BDSEC03 R33111B
## R33112B BDSEC03 R33112B
## R33113B BDSEC03 R33113B
## R33114B BDSEC03 R33114B
## R33115B BDSEC03 R33115B
## R33116B BDSEC03 R33116B
## R33117B BDSEC03 R33117B
## R33101B1 BDSEC03 R33101B1
## R44901 BDSEC04 R44901
## R44902 BDSEC04 R44902
## R44903 BDSEC04 R44903
## R44904 BDSEC04 R44904
## R605 BDSEC06 R605
## R605A BDSEC06 R605A
## R606 BDSEC06 R606
## R606A BDSEC06 R606A
## R607 BDSEC06 R607
## R607A BDSEC06 R607A
## R608 BDSEC06 R608
## R608A BDSEC06 R608A
## R612 BDSEC06 R612
## R612A BDSEC06 R612A
## R613 BDSEC06 R613
## R613A BDSEC06 R613A
## R614 BDSEC06 R614
## R614A BDSEC06 R614A
## R615 BDSEC06 R615
## R615A BDSEC06 R615A
## R70506A DBSEC07 R70506A
## R70506B DBSEC07 R70506B
## R70507A DBSEC07 R70507A
## R70507B DBSEC07 R70507B
## R70508A DBSEC07 R70508A
## R70508B DBSEC07 R70508B
## R70509A DBSEC07 R70509A
## R70509B DBSEC07 R70509B
## R70510A DBSEC07 R70510A
## R70510B DBSEC07 R70510B
## R70511A DBSEC07 R70511A
## R70511B DBSEC07 R70511B
## R804 SEC08A R804
## R806 SEC08A R806
## R811B1 SEC08B R811B1
## R811C1 SEC08C R811C1
## R811D1 SEC08D R811D1
## Descripcion
## GHALI Gasto del Hogar en Alimentos
## GHASE Gasto del Hogar en Artículos y Servicios
## GHUL6 Gasto del Hogar en Ultimos 6 Meses
## GHU12 Gasto del Hogar en Ultimos 12 Meses
## GMED Gasto del Hogar en Educación
## GMVI Gasto del Hogar en Vivienda
## GMEM Gasto del Hogar en Empleo
## GMSA Gasto del Hogar en Salud
## GTMH Gasto del Hogar en Sección 8
## R2231 Matricula no gasto
## R223A1 Matricula no gasto
## R223A2 Monto Gasto
## R223B1 No Gasto
## R223B2 Monto Gasto
## R223C1 No Gasto
## R223C2 Monto Gasto
## R223D1 No Gasto
## R223D2 Monto Gasto
## R223E1 No Gasto
## R223E2 Monto Gasto
## R2241 No Gasto
## R2242 Monto Gasto
## R2243 Monto Gasto
## R224A1 No Gasto
## R224A2 Monto Gasto
## R224A3 Monto Gasto
## R224B1 No Gasto
## R224B2 Monto Gasto
## R224B3 Monto Gasto
## R224C1 No Gasto
## R224C2 Monto Gasto
## R224C3 Monto Gasto
## R33101B Gasto de agua en dólares
## R33102B Gasto de electricidad en dólares
## R33103B Gasto de kerosen en dólares
## R33104B Gasto de gas propano en dólares
## R33105B Gasto de candela en dólares
## R33106B Gasto de leña en dólares
## R33107B Gasto de carga de batería en dólares
## R33108B Gasto de gasolina/diesel en dólares
## R33109B Gasto de telefono fijo en dólares
## R33110B Gasto de celular en dólares
## R33111B Gasto de cable/cable del vecino en dólares
## R33112B Gasto de internet en dólares
## R33113B Gasto de cibercafe en dólares
## R33114B Gasto de impuestos municipales en dólares
## R33115B Gasto de pago de vigilancia en dólares
## R33116B Gasto de recolección de basura en dólares
## R33117B Gasto de otros en dólares
## R33101B1 Gasto de agua envasada en dólares
## R44901 Si / No Tuvo gasto Transporte público?
## R44902 Si / No Tuvo gasto ¿Teléfono público?
## R44903 Si / No Tuvo gasto ¿Combustible,
## R44904 Si / No Tuvo gasto ¿Hospedaje?
## R605 ¿CUÁNTO FUE EL GASTO EN CONSULTA DE (…)?
## R605A Gasto del hogar
## R606 ¿CUÁNTO FUE EL GASTO EN ANÁLISIS DE LABORATORIO DE (…)?
## R606A Gasto del hogar
## R607 ¿CUÁNTO FUE EL GASTO DE (…) EN RAYOS X?
## R607A Gasto del hogar Rayos X
## R608 ¿CUÁNTO FUE EL GASTO DE (…) EN OTROS EXÁMENES?
## R608A Gasto del hogar
## R612 ¿CUÁNTO FUE EL GASTO EN HOSPITALIZACIÓN DE (…)?
## R612A Gasto del Hogar
## R613 ¿CUÁNTO FUE EL GASTO EN MEDICAMENTOS DE (…)?
## R613A Gasto del hogar
## R614 Examenes no gasto
## R614A Examenes laboratorio rayos "x" gasto del Hogar
## R615 ¿CUÁNTO FUE EL GASTO DE (…) EN MEDICINAS?
## R615A Medicinas monto gasto del hogar
## R70506A Gastos médicos consulta permanente
## R70506B Gastos médicos consulta permanente/Divisas
## R70507A Gastos médicos internaciòn
## R70507B Gastos médicos internaciòn/Divisas
## R70508A Otros gastos médicos permanente (exámenes, medicinas, etc)
## R70508B Otros gastos médicos permanente (exámenes, medicinas, etc)/Divisas
## R70509A Gastos médicos consulta eventual
## R70509B Gastos médicos consulta eventual/Divisas
## R70510A Otros gastos médicos eventuales (exámenes, medicinas, etc)
## R70510B Otros gastos médicos eventuales (exámenes, medicinas, etc)/Divisas
## R70511A Gastos en educación
## R70511B Gastos en educación/Divisas
## R804 Frecuencia ¿Cuántas veces realiza este gasto o lo adquiere a la SEMANA?
## R806 ¿Cuál fue el gasto total de los alimetos que compró o adquirió? (Especificar el valor en dólares)
## R811B1 ¿Cuál fue el valor del gasto?
## R811C1 ¿Cuál fue el valor del gasto?
## R811D1 ¿Cuál fue el valor del gasto?
## No_Missing
## GHALI 21413
## GHASE 21413
## GHUL6 21413
## GHU12 21413
## GMED 21413
## GMVI 21413
## GMEM 21413
## GMSA 21413
## GTMH 21413
## R2231 25665
## R223A1 25666
## R223A2 14999
## R223B1 25666
## R223B2 4600
## R223C1 25665
## R223C2 9620
## R223D1 25665
## R223D2 6823
## R223E1 25666
## R223E2 82
## R2241 25665
## R2242 3542
## R2243 146
## R224A1 25664
## R224A2 5874
## R224A3 122
## R224B1 25666
## R224B2 21725
## R224B3 17308
## R224C1 25665
## R224C2 4955
## R224C3 49
## R33101B 15478
## R33102B 18410
## R33103B 832
## R33104B 10560
## R33105B 933
## R33106B 451
## R33107B 104
## R33108B 22
## R33109B 3789
## R33110B 17520
## R33111B 3987
## R33112B 1097
## R33113B 1940
## R33114B 2214
## R33115B 442
## R33116B 467
## R33117B 754
## R33101B1 1642
## R44901 69587
## R44902 69587
## R44903 69587
## R44904 69587
## R605 5681
## R605A 664
## R606 5681
## R606A 410
## R607 5680
## R607A 43
## R608 5681
## R608A 22
## R612 259
## R612A 6
## R613 259
## R613A 9
## R614 259
## R614A 4
## R615 10029
## R615A 4389
## R70506A 4857
## R70506B 4857
## R70507A 4857
## R70507B 4857
## R70508A 4857
## R70508B 4857
## R70509A 4857
## R70509B 4857
## R70510A 4857
## R70510B 4857
## R70511A 4857
## R70511B 4857
## R804 187201
## R806 214503
## R811B1 67920
## R811C1 28151
## R811D1 4845
library(dplyr)
# Contar cuántas veces aparece cada archivo en tabla_gastos
conteo_archivos <- tabla_gastos %>%
count(Archivo, name = "Frecuencia")
# Ver resultado
print(conteo_archivos)
## Archivo Frecuencia
## 1 BDSEC00 9
## 2 BDSEC02 23
## 3 BDSEC03 18
## 4 BDSEC04 4
## 5 BDSEC06 16
## 6 DBSEC07 12
## 7 SEC08A 2
## 8 SEC08B 1
## 9 SEC08C 1
## 10 SEC08D 1
library(dplyr)
# Filtrar solo las filas donde la columna 'Archivo' es "BDSEC02"
tabla_gastos_BDSEC00 <- tabla_gastos %>%
filter(Archivo == "BDSEC00")
# Ver el resultado
head(tabla_gastos_BDSEC00)
## Archivo Variable Descripcion No_Missing
## GHALI BDSEC00 GHALI Gasto del Hogar en Alimentos 21413
## GHASE BDSEC00 GHASE Gasto del Hogar en Artículos y Servicios 21413
## GHUL6 BDSEC00 GHUL6 Gasto del Hogar en Ultimos 6 Meses 21413
## GHU12 BDSEC00 GHU12 Gasto del Hogar en Ultimos 12 Meses 21413
## GMED BDSEC00 GMED Gasto del Hogar en Educación 21413
## GMVI BDSEC00 GMVI Gasto del Hogar en Vivienda 21413
library(dplyr)
# Filtrar el dataframe para mantener solo las filas con valores no nulos en las variables especificadas
tabla_gastos_filtrada <- BDSEC00 %>%
filter(!is.na(GHALI) & !is.na(GHASE) & !is.na(GMED) & !is.na(GMVI))
# Ver las primeras filas del nuevo dataframe
head(tabla_gastos_filtrada)
## # A tibble: 6 × 37
## EDICION LOTE TIPO FOLIO VIV REGION AREA Depto Munic Canton mes R017
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl+lb>
## 1 2011 284 0 3827 0 2 0 5 5 5 3 1 [Comp…
## 2 2011 1178 0 15941 0 3 0 8 5 3 10 1 [Comp…
## 3 2011 1065 1 14402 0 3 0 9 3 11 9 1 [Comp…
## 4 2011 498 0 6715 0 1 0 2 1 2 5 1 [Comp…
## 5 2011 101 0 1337 0 4 0 11 1 7 1 1 [Comp…
## 6 2011 3003 0 30037 0 1 0 2 7 11 1 1 [Comp…
## # ℹ 25 more variables: R017OTR <dbl>, R020 <dbl+lbl>, INGFA <dbl>, INGPE <dbl>,
## # MIEMH <dbl>, GASTOHOG <dbl>, POBREZA <dbl+lbl>, GHALI <dbl>, GHASE <dbl>,
## # GHUL6 <dbl>, GHU12 <dbl>, GMED <dbl>, GMVI <dbl>, GMEM <dbl>, GMSA <dbl>,
## # GTMH <dbl>, TOTAYUDA <dbl>, IREFa1 <dbl>, IREFb1 <dbl>, IREFa <dbl>,
## # IREFb <dbl>, IRES <dbl>, MUNIC_AUTO <dbl>, FAC00 <dbl>, Deciles <dbl>
# Calcular la nueva variable 'ingresopercapita' dividiendo INGFA entre MIEMH en tabla_gastos_filtrada
tabla_gastos_filtrada$ingresopercapita <- tabla_gastos_filtrada$INGFA / tabla_gastos_filtrada$MIEMH
# Ver las primeras filas con la nueva variable
head(tabla_gastos_filtrada)
## # A tibble: 6 × 38
## EDICION LOTE TIPO FOLIO VIV REGION AREA Depto Munic Canton mes R017
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl+lb>
## 1 2011 284 0 3827 0 2 0 5 5 5 3 1 [Comp…
## 2 2011 1178 0 15941 0 3 0 8 5 3 10 1 [Comp…
## 3 2011 1065 1 14402 0 3 0 9 3 11 9 1 [Comp…
## 4 2011 498 0 6715 0 1 0 2 1 2 5 1 [Comp…
## 5 2011 101 0 1337 0 4 0 11 1 7 1 1 [Comp…
## 6 2011 3003 0 30037 0 1 0 2 7 11 1 1 [Comp…
## # ℹ 26 more variables: R017OTR <dbl>, R020 <dbl+lbl>, INGFA <dbl>, INGPE <dbl>,
## # MIEMH <dbl>, GASTOHOG <dbl>, POBREZA <dbl+lbl>, GHALI <dbl>, GHASE <dbl>,
## # GHUL6 <dbl>, GHU12 <dbl>, GMED <dbl>, GMVI <dbl>, GMEM <dbl>, GMSA <dbl>,
## # GTMH <dbl>, TOTAYUDA <dbl>, IREFa1 <dbl>, IREFb1 <dbl>, IREFa <dbl>,
## # IREFb <dbl>, IRES <dbl>, MUNIC_AUTO <dbl>, FAC00 <dbl>, Deciles <dbl>,
## # ingresopercapita <dbl>
# Crear la nueva variable 'gasto_total' sumando las variables especificadas
tabla_gastos_filtrada$gasto_total <- tabla_gastos_filtrada$GHALI + tabla_gastos_filtrada$GHASE +
tabla_gastos_filtrada$GMED + tabla_gastos_filtrada$GMVI +
tabla_gastos_filtrada$GMEM + tabla_gastos_filtrada$GMSA
# Ver las primeras filas con la nueva variable
head(tabla_gastos_filtrada)
## # A tibble: 6 × 39
## EDICION LOTE TIPO FOLIO VIV REGION AREA Depto Munic Canton mes R017
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl+lb>
## 1 2011 284 0 3827 0 2 0 5 5 5 3 1 [Comp…
## 2 2011 1178 0 15941 0 3 0 8 5 3 10 1 [Comp…
## 3 2011 1065 1 14402 0 3 0 9 3 11 9 1 [Comp…
## 4 2011 498 0 6715 0 1 0 2 1 2 5 1 [Comp…
## 5 2011 101 0 1337 0 4 0 11 1 7 1 1 [Comp…
## 6 2011 3003 0 30037 0 1 0 2 7 11 1 1 [Comp…
## # ℹ 27 more variables: R017OTR <dbl>, R020 <dbl+lbl>, INGFA <dbl>, INGPE <dbl>,
## # MIEMH <dbl>, GASTOHOG <dbl>, POBREZA <dbl+lbl>, GHALI <dbl>, GHASE <dbl>,
## # GHUL6 <dbl>, GHU12 <dbl>, GMED <dbl>, GMVI <dbl>, GMEM <dbl>, GMSA <dbl>,
## # GTMH <dbl>, TOTAYUDA <dbl>, IREFa1 <dbl>, IREFb1 <dbl>, IREFa <dbl>,
## # IREFb <dbl>, IRES <dbl>, MUNIC_AUTO <dbl>, FAC00 <dbl>, Deciles <dbl>,
## # ingresopercapita <dbl>, gasto_total <dbl>
# Calcular la nueva variable 'gasto_total_per_capita' dividiendo gasto_total entre MIEMH
tabla_gastos_filtrada$gasto_total_per_capita <- tabla_gastos_filtrada$gasto_total / tabla_gastos_filtrada$MIEMH
# Ver las primeras filas con la nueva variable
head(tabla_gastos_filtrada)
## # A tibble: 6 × 40
## EDICION LOTE TIPO FOLIO VIV REGION AREA Depto Munic Canton mes R017
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl+lb>
## 1 2011 284 0 3827 0 2 0 5 5 5 3 1 [Comp…
## 2 2011 1178 0 15941 0 3 0 8 5 3 10 1 [Comp…
## 3 2011 1065 1 14402 0 3 0 9 3 11 9 1 [Comp…
## 4 2011 498 0 6715 0 1 0 2 1 2 5 1 [Comp…
## 5 2011 101 0 1337 0 4 0 11 1 7 1 1 [Comp…
## 6 2011 3003 0 30037 0 1 0 2 7 11 1 1 [Comp…
## # ℹ 28 more variables: R017OTR <dbl>, R020 <dbl+lbl>, INGFA <dbl>, INGPE <dbl>,
## # MIEMH <dbl>, GASTOHOG <dbl>, POBREZA <dbl+lbl>, GHALI <dbl>, GHASE <dbl>,
## # GHUL6 <dbl>, GHU12 <dbl>, GMED <dbl>, GMVI <dbl>, GMEM <dbl>, GMSA <dbl>,
## # GTMH <dbl>, TOTAYUDA <dbl>, IREFa1 <dbl>, IREFb1 <dbl>, IREFa <dbl>,
## # IREFb <dbl>, IRES <dbl>, MUNIC_AUTO <dbl>, FAC00 <dbl>, Deciles <dbl>,
## # ingresopercapita <dbl>, gasto_total <dbl>, gasto_total_per_capita <dbl>
# Crear el dataframe 'df_final' con las variables seleccionadas
df_final <- tabla_gastos_filtrada %>%
select(GHALI, GHASE, GMED, GMVI, GMEM, GMSA, gasto_total, gasto_total_per_capita, ingresopercapita, FAC00)
# Ver las primeras filas del dataframe final
head(df_final)
## # A tibble: 6 × 10
## GHALI GHASE GMED GMVI GMEM GMSA gasto_total gasto_total_per_capita
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 22.2 1.15 0 1.59 0 0 25.0 25.0
## 2 17.0 2.55 0 2 0 0 21.6 21.6
## 3 23.3 1.73 0 0 0 0 25 25
## 4 25.1 5.63 0 2.3 0 0 33.0 33.0
## 5 21.2 5 0 4.5 0 0 30.6 30.6
## 6 34.9 4.5 0 1 0 0 40.4 40.4
## # ℹ 2 more variables: ingresopercapita <dbl>, FAC00 <dbl>