ropensci / eph

Herramientas para procesamiento de la base usuaria de la EPH
https://ropensci.github.io/eph/
Other
58 stars 18 forks source link

Identificar cantidad de personas en un rango de edad por hogar (base EPH) #28

Closed enadianet closed 2 years ago

enadianet commented 3 years ago

Hola, he corrido el comando para calcular pobreza primer semestre 2020 y me salió bien, tengo identificado cada individuo por su condición (POBRE-NO POBRE-INDIGENTE), ahora quiero saber cómo puedo hacer para saber cuántas personas en edad escolar hay por hogar, es decir una nueva columna que me arroje ese número. Gracias.

jgjuara commented 3 years ago

Hola! En realidad no sé si tu consulta corresponde a un "issue" sobre el paquete, pero para orientarte primero deberías definir si lo que necesitas es una tabla con la lista de hogares y la cantidad de personas en edad escolar en cada hogar, o si querés un resumen con la cantidad de hogares que tienen personas en edad escolar. Basicamente vas a necesitar primero indicar en cada caso cuando una persona cumple con el criterio de edad escolar (por ej.: CH06 >= 4 & CH06<=17) y luego calcular la cantidad de hogares que tienen alguna persona que cumpla el criterio. Te dejo un ejemplo que quizás te sirva:

library(eph) library(tidyverse)

base_individuos <- get_microdata(year = 2020, trimester = 1:2, type = "individual") %>% mutate(idhogar = paste0(CODUSU,NRO_HOGAR, TRIMESTRE))

base_hogares <- get_microdata(year = 2020, trimester = 1:2, type = "hogar") %>% mutate(idhogar = paste0(CODUSU,NRO_HOGAR, TRIMESTRE)) %>% select(idhogar, PONDERA)

tabla_resultado <- base_individuos %>%

agrupar por hogar

group_by(idhogar) %>% 
# para cada hogar cuenta cuantos casos cumplen con tener entre 4 y 17 años
summarise(personasEn_EdadEscolar = sum(CH06>= 4 & CH06<= 17, na.rm = T)) %>% 
ungroup(.) %>%
# pegar la tabla de hogares con ponderadores para poder sacar el total ponderado
left_join(.,base_hogares)

Hay otras soluciones posibles, no se si esta es la mejor pero funciona, otro ejemplo sería usando la función pivot_wider() sobre la base de individuos. Fijate que para unir correctamente las tablas necesitas crear un id_hogar, dependiendo de si consideras varios trimestres, puede ser que debas incluir el valor del trimestre y del año en el idhogar.

enadianet commented 3 years ago

Muchas gracias por tu pronta respuesta. Estuve intentando correr eso que me pasaste y no puedo. Yo accedí a la base de microdatos con get_microdata y allí ejecuté un comando para calcular pobreza. Lo que vos me pasas: base_individuos <- base_individuos %>% mutate(idhogar = paste0(CODUSU,NRO_HOGAR))

me dice que base_individuos es un objeto que no encuentra. Con respecto a tu pregunta inicial sobre si lo que quiero es una tabla con la lista de hogares y la cantidad de personas en edad escolar en cada hogar, o un resumen con la cantidad de hogares que tienen personas en edad escolar, la respuesta es una tabla con hogares y la cantidad de personas en edad escolar en cada hogar. Gracias

jgjuara commented 3 years ago

Claro, en caso de que ya tengas en el ambiente de trabajo cargadas las bases deberías aplicar "mutate( idhogar = ... )" sobre esas bases. Yo había puesto "base_individuos" para que vos reemplazaras ese nombre con el nombre de la variable que correspondiera a las bases que ya habías cargado, en caso de efectivamente las hubieras asignado a una variable.

En todo caso, corregí el código de mi comentario anterior para que al correrlo descargue las bases del 1er y 2do trimestre de 2020. Y también saqué las lineas de código que resumían los datos para que el resultado sea la tabla que entiendo buscás, fijate que además te va a dar una columna con el valor de la ponderación de cada hogar.

Saludos!

Muchas gracias por tu pronta respuesta. Estuve intentando correr eso que me pasaste y no puedo. Yo accedí a la base de microdatos con get_microdata y allí ejecuté un comando para calcular pobreza. Lo que vos me pasas: base_individuos <- base_individuos %>% mutate(idhogar = paste0(CODUSU,NRO_HOGAR))

me dice que base_individuos es un objeto que no encuentra. Con respecto a tu pregunta inicial sobre si lo que quiero es una tabla con la lista de hogares y la cantidad de personas en edad escolar en cada hogar, o un resumen con la cantidad de hogares que tienen personas en edad escolar, la respuesta es una tabla con hogares y la cantidad de personas en edad escolar en cada hogar. Gracias