Paquete MicroDatosEs

El paquete MicroDatosEs está pensado para automatizar la lectura de ficheros de microdatos producidos por organismos estadísticos españoles (el INE y demás).

Consta de dos partes: una estructura genérica para permitir la lectura de cualquier fichero de microdatos y conjuntos de ficheros de metadatos que, utilizando la estructura genérica, permiten leer ficheros concretos de microdatos.

Ejemplo de lectura de los microdatos de la EPA

En este ejemplo voy a utilizar los datos de la Encuesta de Población Activa del INE correspondiente al primer trimestre del 2012 que pueden descargarse de las páginas del INE o directamente de su enlace directo. Se trata de un fichero comprimido que, obviamente, tenemos que descomprimir, para obtener un fichero de texto llamado EPAwebT0112 con un contenido prácticamente ininteligible. Haciendo
library(MicroDatosEs)
epa <- epa2005("EPAwebT0112")
se carga este fichero en R. El objeto resultante es de la clase data.set, una estructura de datos similar a un dataframe definido en el paquete memisc y que dispone de ciertos instrumentos y estructuras de datos que lo hacen muy adecuado para trabajar con información procedente de encuestas. De hecho, quien quiera usar R en este ámbito, haría bien en, cuando menos, familiarizarse con la viñeta del paquete. Para inspeccionar el contenido del objeto epa se puede hacer summary(epa) y luego seleccionar las variables de interés mediante
dat <- subset( epa, select = c( edad, sexo, nforma, aoi, factorel) )
que corresponden a la edad, sexo, nivel de formación, estado ocupacional y el factor de elevación de los individuos encuestados. Puedo recodificar niveles así:
dat$aoi <- recode(dat$aoi, "o" = 1 <- 3:4, "p" = 2 <- 5:6, "i" = 3 <- 7:9)
dat$nforma <- recode( dat$nforma,
  "o"  = 1 <- c(80,11),
  "p"  = 2 <- c(12,21,22,23,36),
  "fp" = 3 <- c(31,33,34,41,51),
  "b"  = 4 <- c(32),
  "u"  = 5 <- c(50,52:56,59,61) )
con lo que estoy indicando, por ejemplo, que los ocupados, "o", son aquellos con los códigos 3 y 4 en la encuesta, los parados, "p", los de los códigos 5 y 6 y los inactivos los de los códigos 7, 8 y 9. Igualmente, recodifico los niveles educativos en "otros", "primaria", "formación profesional", "bachiller" y "universidad". Luego, con
dat <- as.data.frame(dat)
convierto el objeto data.set en un dataframe tradicional. Por ejemplo, si ahora se hace
tasa.paro <- dat[ as.numeric(dat$edad) > 3, ]     # se eliminan los menores de 16 años
tasa.paro <- tasa.paro[ tasa.paro$aoi != "i", ]   # se eliminan los inactivos
tasa.paro$factorel <- tasa.paro$factorel / 100    # realmente no necesario
100 * sum( tasa.paro$factorel * (tasa.paro$aoi == "p") ) / sum( tasa.paro$factorel )
se obtiene la consabida tasa de paro para el primer trimestre del año.

Más información

La página de desarrollo de MicroDatosEs está aquí. Contiene el código del paquete y la última versión de desarrollo del mismo.