Primero, se cargaron las librerías necesarias para realizar la limpieza y análisis.
library(readxl)
library(dplyr)
##
## 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(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
library(knitr)
library(stargazer)
##
## Please cite as:
## Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
## R package version 5.2.3. https://CRAN.R-project.org/package=stargazer
library(tidyr)
library(kableExtra)
## Warning: package 'kableExtra' was built under R version 4.2.3
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
Primero, se cargarón los datos de los 15 archivos obtenidos de la encuesta, almacenandolos en la variable “archivos_sav”. Después de esto, se crearon df individuales con los nombres del archivo correspondiente.
#Obtiene la lista de archivos .sav que están en la carpeta
archivos_sav <- list.files(pattern = "\\.sav$", full.names = TRUE)
#Lee todos los archivos y los almacena en la lista lista_datos
lista_datos <- lapply(archivos_sav, read_sav)
#Asigna nombres a cada dataset en la lista según el nombre del archivo y almacena los nombres de los arhcivos en la lista a
names(lista_datos) <- tools::file_path_sans_ext(basename(archivos_sav))
a <- names(lista_datos)
# Crea un archivo data frame por cada elemento en 'lista_datos', nombrandolo con el nombre del archivo .sav original
for (i in seq_along(lista_datos)) {
assign(a[i], lista_datos[[i]])
}
Seguido de esto, se creo la función “get_Etiqueta”, con la cual se obtiene un df con todas las etiquetas que contienen la palabra “gasto”, así como la cantidad de registros en la que se encuentra la información.
get_Etiqueta <- function(df){
# Obtener las etiquetas de las columnas
column_labels <- sapply(df, function(col) attr(col, "label"))
# Obtener las etiquetas de las columnas (Value) de la lista column_labels
labels_vector <- sapply(column_labels, function(x) {
if (is.null(x)) {
return(NA) # Si no hay etiqueta, asigna NA
} else {
return(x) # Devuelve la etiqueta
}
})
# Convertir a tabla con nombres de columnas, etiquetas y conteo de datos no nulos
summary_table <- df %>%
summarise(across(everything(), ~ sum(!is.na(.)))) %>%
pivot_longer(cols = everything(), names_to = "Variable", values_to = "Non_Null_Count") %>%
mutate(Description = labels_vector) %>%
filter(grepl("gasto", Description, ignore.case = TRUE))%>%
select(Variable, Description, Non_Null_Count)
return(summary_table)
}
Utilizando la función anteriorimente creada, se probó para los 15 archivos para identificar al que tuviera la mayor cantidad de etiquetas que contienen “gasto”. Se identificó que el df “SEC03” era el que más etiquetas relacionadas con gasto tenía. El resúmen con los nombres de las variables, sus etiquetas y la cantidad de registros en los que se encuentra información se muestra a continuación.
etiquetas_final <- get_Etiqueta(SEC03)
# Formatear la tabla
kable(etiquetas_final)
Variable | Description | Non_Null_Count |
---|---|---|
R33101B | Gasto de agua en dólares | 14754 |
R33102B | Gasto de electricidad en dólares | 19018 |
R33103B | Gasto de kerosen en dólares | 661 |
R33104B | Gasto de gas propano en dólares | 10202 |
R33105B | Gasto de candela en dólares | 786 |
R33106B | Gasto de leña en dólares | 546 |
R33107B | Gasto de carga de batería en dólares | 87 |
R33109B | Gasto de telefono fijo en dólares | 3696 |
R33110B | Gasto de celular en dólares | 18142 |
R33111B | Gasto de cable/cable del vecino en dólares | 4805 |
R33112B | Gasto de internet en dólares | 777 |
R33113B | Gasto de cibercafe en dólares | 2054 |
R33114B | Gasto de impuestos municipales en dólares | 2131 |
R33115B | Gasto de pago de vigilancia en dólares | 406 |
R33116B | Gasto de recolección de basura en dólares | 482 |
R33117A | Otros tipo de gasto | 21710 |
R33117B | Otros Ultimo gasto ? | 403 |
R33101B1 | Gasto de agua envasada en dólares | 1946 |
R33101B2 | Gasto de agua envasada en dólares | 1569 |
df_final <- SEC03 %>%
select(R33101B, R33102B, R33103B, R33104B, R33105B, R33106B, R33107B, R33108B, R33109B, R33110B,R33111B, R33112B, R33113B, R33114B, R33115B, R33116B, R33117A, R33117B, R33101A, R33101B)