ropensci / eph

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

Error: No common type for `..1$microdata$ESTADO` <double> and `..4$microdata$ESTADO` <haven_labelled>. #20

Closed lucasterranova closed 4 years ago

lucasterranova commented 4 years ago

Buenas! Para una investigación tenía que procesar datos de EPH desde 2007 hasta 2011, principalmente ocupados (registrados y no registrados) en la industria manufacturera. Para esto corrí la función "get_microdata()", que te devuelve los valores de las variables como lista dentro de una columna.

eph.individual.07 <- get_microdata(
  year = c(2007),
  trimester = c(1, 2, 3, 4),
  type = "individual",
  vars = c("ESTADO", "CAT_OCUP", "PP04B_COD", "PONDERA", "PP07H", "P21"))

El problema fue que, a la hora de unnestear la data, me reportaba el error que puse en el título, ya que las variables (entre trimestre y trimestre) cambiaban su tipo. Al principio me sucedió con "PP04B_COD", pero luego fue evidente que pasaba con todas.

_Error: No common type for ..1$microdata$PP04B_COD and ..2$microdata$PP04B_COD ._

Primero probé cambiando la función para unnestear, luego tratando de convertir los elementos de la lista, pero no funcionaba bien. Después de googlear un poco y de bucear en los elementos de los elementos de la lista, con este simple código (la primera parte edita la lista, la segunda la unnestea) lo pude resolver:

eph.individual.07$microdata[[2]]$PP04B_COD <-as.double(eph.individual.07$microdata[[2]]$PP04B_COD) 

eph.individual.07$microdata[[4]]$PP04B_COD <- as.double(eph.individual.07$microdata[[4]]$PP04B_COD)

eph.individual.07$microdata[[1]]$PP04B_COD <- as.double(eph.individual.07$microdata[[1]]$PP04B_COD)

eph.individual.07$microdata[[4]]$ESTADO <- as.double(eph.individual.07$microdata[[4]]$ESTADO) 

eph.individual.07$microdata[[4]]$CAT_OCUP <- as.double(eph.individual.07$microdata[[4]]$CAT_OCUP)

eph.individual.07$microdata[[4]]$PP07H <- as.double(eph.individual.07$microdata[[4]]$PP07H)

bases_bind <- eph.individual.07 %>%
  unchop(., cols = c(microdata))

Espero que sirva!

Saludos!

DiegoKoz commented 4 years ago

@pablotis Esto se resolvería con lo que proponías de definir los types de todas las variables a priori, no?

lucasterranova commented 4 years ago

Entiendo que este problema sólo aparece para 2007, ya que para el resto de los años pude laburar sin tener que dar estas vueltas.

Abrazo!

pablotis commented 4 years ago

Hola Lucas, gracias por mostrarnos el error y la posible solución. Efectivamente (y no solo para 2007) algunos tipos de variables están rompiendo la función al querer bajar la serie. Estamos viendo la mejor forma de solucionarlo para todas las bases, en estos días ya debería estar arreglado!

pablotis commented 4 years ago

Hola Lucas, esto ya debería estar resuelto. Avisanos si te vuelve a pasa y gracias por el reporte.

DiegoKoz commented 4 years ago

Entiendo que esto esta resuelto. Si sigue fallando @lucasterranova simplemente re abrí el issue.

saludos