El paquete MicroDatosEs para microdatos públicos

Comencé hace un tiempo un pequeño paquete de R, MicroDataEs, para importar automáticamente a R ficheros de microdatos distribuidos por los diversos organismos estadísticos (españoles, por acotar el ámbito). El objetivo es facilitar el análisis de este tipo de datos a los usuarios de R y como consecuencia:

  • fomentar el uso de R entre aquellos que utilicen frecuentemente este tipo de información y
  • hacer más accesibles estos datos a los usuarios de R.

Quien haya tratado de trabajar, por ejemplo, con los ficheros de microdatos de la EPA que publica el INE comprenderá rápidamente el interés y alcance del paquete. Porque estos datos:

  • se distribuyen en un fichero de texto posicional que sólo contiene códigos numéricos y
  • la relación de valores correspondientes a dichos códigos y otros metadatos (como la posición de las columnas) están contenidas en unas hojas de Excel.

Cada usuario de R que quiera, por lo tanto, utilizar esta información tiene primero que (muy trabajosamente) trasladar a R los metadatos de las hojas de Excel, crear funciones que realicen la traducción, etc. Y estoy seguro de que más de uno (y más de cien) ya han malgastado horas de su vida en esos afanes.

El paquete MicroDataEs contiene dos partes:

  • Una plataforma común y reutilizable para almacenar metadatos, leer ficheros, etc. y generar los dataframes correspondientes para, en principio, una clase amplia de ficheros de metadatos.
  • Un catálogo de metadatos correspondientes a tipos de ficheros de microdatos generados por instituciones estadísticas.

Por el momento, el catálogo contiene únicamente información para la lectura de los datos de la EPA. Pero espero hacerlo crecer (y tal vez con tu ayuda: ¿me echas una mano?).

El paquete está disponible en R-Forge y puede instalarse en R haciendo

install.packages("MicroDatosEs", repos="http://R-Forge.R-project.org")

aunque tal vez sea necesario instalar alguna dependencia desde CRAN (si experimentan problemas en la instalación, hay que comprobar el mensaje de error para ver si se debe, efectivamente, a la falta un paquete). Se puede probar luego consultando ?epa2005.

Y para terminar, insisto: si quieres colaborar en el paquete enriqueciendo el catálogo de ficheros (o, cuando menos, existe algún tipo de ficheros que te gustaría añadir a él), ponte en contacto conmigo y vemos qué podemos hacer al respecto.

40 comentarios sobre “El paquete MicroDatosEs para microdatos públicos

  1. José Ignacio 3 agosto, 2012 10:59

    Hola Carlos:
    Gran iniciativa.
    Mi experiencia con los microdatos del INE (y también del CIS) es bastante laboriosa. Hasta ahora los vuelco a SPSS pero escribiéndome “a pedal” el código correspondiente. Además los campos de las variables de ponderación hay que adaptarlos para lidiar con el carácter decimal que incluyen.
    He podido instalar el paquete pero, sinceramente, no sé cómo seguir. Intentaré meterme más a fondo.
    Un cordil saludo,
    José Ignacio

  2. datanalytics 3 agosto, 2012 12:31

    @José Ignacio Pues voy a colgar un minitutorial para demostrar cómo funcionaría en los próximos días.

    Si hay datos del INE o del CIS que tengan continuidad en el tiempo (es decir, como la EPA, que salen ficheros periodicamente con el mismo formato) que conozcas y te interesen, los integramos en el paquete. ¿Tienes alguna lista?

  3. José Ignacio 3 agosto, 2012 12:50

    @datanalytics
    Exactamente con el mismo formato creo que no existe más que la EPA. Otras encuestas periódicas (anuales) con microdatos son la “Encuesta de Presupuestos Familiares” (con una estructura de ficheros más bien compleja) y la “Encuesta de Equipamiento y Uso de las TIC en los Hogares”, pero la estructura varía de un año al otro.
    El CIS publica microdatos mensualmente de los Barómetros de Opinión, con estructura variable, y el (ICC) Indicador de Confianza de los Consumidores, que creo tampoco mantiene la misma exacta estructura. Para acceder a los ficheros de microdatos hay que rellenar una ficha con los datos del peticionario.
    Gracias por el minitutorial

  4. OTTO F. WAGNER 4 agosto, 2012 8:53

    Deseoso de que publique el tutorial!!

  5. Francisco 4 agosto, 2012 12:11

    Hola Carlos, yo con el tema de la ECPF la suelo leer de un modo bastante sencillo, lo único eso sí, que tienes que crearte un .csv con 2 columnas que tenga el nombre de las variables y su longitud, esto lo puedes sacar más o menos rápidamente de la documentación que ofrece el INE.

    El resto es un código R bastante fácil, donde es de destacar la función read.fwf que te permite poner las cabeceras y los separadores donde conviente:

    DESC_VAR_HOGAR = read.csv(‘D:\\fjra\\INPUTS_HOGAR.csv’)

    V_LONGITUD <- DESC_VAR_HOGAR$LONGITUD
    V_VARIABLE <- DESC_VAR_HOGAR$VARIABLE

    Result = read.fwf('D:\\fjra\\Fichero_usuario_hogar_2010', widths = V_LONGITUD, col.name = V_VARIABLE, header = FALSE, sep = "\t")

    Así pues si cambia la estructura de los ficheros, voy cambiando la estructura del fichero de cabecera

    Con el tema de datos del censo empecé con una estructura quizás más simple y tal como sigue (pongo este ejemplo para aclarar en todo caso y porque ya lo tenía escrito):

    V_LONGITUD = c(6, 4, 2, 4, 3, 1, 3, 2,
    3, 1, 2, 2, 2, 4, 4, 4,
    2, 3, 1, 3, 2, 1, 2, 2,
    2, 2, 1, 3, 2, 1, 2, 2,
    1, 2, 2, 2, 3, 1, 3, 2,
    2)

    V_VARIABLE = c("ID_HOGAR", "NORDF", "MNAC", "ANAC", "EDAD", "SEXO", "NACI", "CPRON",
    "CMUNN", "ECIVIL", "PARENPP", "ESREAL", "TESTUD", "ANIOE", "ANIOC", "ANIOM",
    "CLPRO", "CLMUNP", "RES10", "CMUN10", "CPROV10", "CONLEN", "SITU1",
    "SITU2", "SITU3", "SITU", "LUGTE", "CLMUNI", "CLPROV", "NVIAJE", "MDESP1",
    "MDESP2", "TDESP", "ESCUR1", "ESCUR2", "ESCUR3", "COCUP", "SITP", "COACTI", "CSE", "TTRAB")

    Result = read.fwf('D:\\fjra\\CENSO1.TXT', widths = V_LONGITUD, col.name = V_VARIABLE, header = FALSE, n = 20, sep = "\t")

    Lo que no conozco muy bien es como hacer un paquete, pero en definitiva una idea podría ser montar distintos ficheros .csv que se actualicen conforme se modifique la estructura INE o hacer que esto sea automático y que R, en función de la fecha, eliga el que corresponda mediante un bucle condicional y la función read.fwf No sé si estoy muy alejado de la realidad o no, pero en definitiva no me parece tan tedioso el leer los ficheros de microdatos que me interese, aunque eso no quita que si me los dan automáticamente leídos y preparados en por ejemplo .csv separados por comas y con cabeceras pues mucho mejor.

    Un saludo

    PD Si ves que puedo ayudar en algo mándame algún correo, si me gustaría entender algo más de R por sobre todo en la parte de publicación de paquetes para uso por terceros

  6. datanalytics 5 agosto, 2012 19:42

    @Francisco Lo podemos mirar. De todos modos, el fichero de microdatos contiene tres ficheros distintos: hogares, miembros y gastos. No conozco la estructura de los datos (¡a pesar de que una vez mis padres estuvieron en el panel!) pero le podemos echar un vistazo. Te escribo.

  7. Fran 5 agosto, 2012 23:26

    Efectivamente son 3 ficheros relacionados. Yo ahora los tengo leidos y pasados .csv gracias a R, En una maquina normal no tarda mucho en cargar los trimestres y además, si tomas solo las variables que necesitas, vatodo mas rápido. Sobre tu problema en general creo que se podría montar una o varias function en R para realizar las lecturas de los microdatos mas importantes y que son la EPA, la ECPF, el CENSO (que dentro de poco se actualiza) y algunos mas. El usuario podría meter el nombre del fichero a leer y algunos datos mas y daría como resultado un .csv apto a utilizar por R junto con informacion adicional. Para estos 3 casos el tema seria algo tedioso pero factible y por lo que he visto en general la estructura cambia poco y casi siempre se añaden mas columnas a la derecha, con lo que su mantenimiento no seria muy complicado. Saludos

  8. Fran 5 agosto, 2012 23:36

    Para montar dichas funciona read.fwf viene muy bien y simplifica mucho, además de ser bastante rapida

  9. datanalytics 9 agosto, 2012 11:34

    Te he tratado de escribir para ver cómo podríamos avanzar en este asunto pero hotmail me devuelve el mensaje. ¿Me puedes escribir?

  10. Guillermo 27 agosto, 2012 17:21

    si montáis un lector de ficheros de la EPF me pongo a aprender R! Yo también he trabajado con ellos, y lo volveré a hacer seguro. Diría que el maor problema estaría en los códigos de gasto, pero son bastante estables hasta donde sé.
    lo del censo lo veo complicadísimo, por la gran cantidad de datos y porque encuentro muy difícil que mantengan un mínimo el modelo de datos de un censo a otro. El padrón cambia menos, pero también lo hace (esta última explotación, por ejemplo).
    En fin, suerte, si os puedo ayudar algo (a nivel conceptual) me dices, Carlos,

  11. José Luis 16 octubre, 2012 13:01

    Hola.
    Sólo darte las gracias por el paquete . Llevo una semana utilizándolo para leer datos de la EPA, y me está sirviendo un montón. Me he creado funciones para calcular tasas de paro, actividad , empleo y demás cosas para los “jóvenes” entre 16 y 35 años según sean extranjeros o españoles, y las aplico usando sapply a una lista dónde tengo guardado los datos trimestrales de un año.
    La idea era tener en esa lista todos los trimestres desde 2007 hasta 2012, pero me quedo sin memoria RAM, así que voy año a año.

    Lo dicho, muchas gracias.

  12. datanalytics 16 octubre, 2012 13:04

    @José Luis Me alegro mucho de eso. A ver si saco un ratillo y me pongo a ampliar el paquete.

    E insisto: si alguien quiere colaborar… Creo que el siguiente fichero de microdatos que añadir a la exigua lista es el de la EPF. Que es, por cierto, uno de los más complicados.

  13. pablo gimenez 19 diciembre, 2012 21:04

    Hola !

    puede alguien colgar un tutorial.

    Muchas gracias!
    un saludo,
    Pablo.

  14. Isabel 10 enero, 2013 12:04

    No puedo instalar el paquete 🙁
    Error: package ‘MicroDatosEs’ is not available (for R version 2.15.2)
    Qué versión debería tener??
    Muchas gracias, si este paquete funciona me habrás ahorrado muchísimas horas de trabajo 🙂

  15. datanalytics 10 enero, 2013 17:31

    @Isabel El paquete está bien, no tiene problemas. El problema está en r-forge y espero que se solucione pronto.

    Entre tanto, si me escribes y me indicas qué sistema operativo usas, etc., te puedo pasar la última versión del paquete. También la puedes construir tú bajando el código fuente de r-forge, pero si no lo lo has hecho nunca, igual es más rápido lo anterior.

  16. Isabel 11 enero, 2013 18:12

    @datanalytics
    Tengo windows 7, y soy bastante novata en R asi que cuanto más “para tontos” lo pueda hacer mejor 😉 muchas gracias!

  17. Pedro 15 febrero, 2013 1:19

    Hola,

    Es posible explotar la dimension de panel con la microdata que el INE distribuye publicamente? Si asi es, esta incluido esto en el paquete? Cada vivienda se entrevista durante seis trimestres consecutivos con lo que en principio se podria analizar la dimension temporal, lo cual seria util para determinadas cuestiones.

    Muchisimas gracias por popularizar R entre los usuarios de microdata economica!

  18. datanalytics 15 febrero, 2013 1:27

    @Pedro Creo que no es posible trazar dichas viviendas. Pero puedes explorar los microdatos y comprobarlo. Yo ni siquiera soy experto en esas cuestiones.

  19. datanalytics 15 febrero, 2013 1:27

    @Isabel Creo que ya están solucionados los problemas que había en r-forge en general y con mi paquete en particular.

  20. dat 13 abril, 2013 17:35

    Genial el proyecto!

    Pero no puedo descargar el paquete:

    package ‘MicroDatosEs’ is not available (for R version 2.15.2)

    Mi Sist.Op. es Mac OS X (10.6.8)

    Un saludo y gracias!

  21. Adrián Pino 13 septiembre, 2013 13:09

    Buenas, parece una iniciativa muy interesante.
    Estoy teniendo problemas en la instalación del paquete. Requiere entre otros “Hmisc”, pero al intentar instalar éste, después de compilarlo obtengo el siguiente error:

    installing to /home/adrian/R/i686-pc-linux-gnu-library/2.14/Hmisc/libs
    ** R
    ** inst
    ** preparing package for lazy loading
    Error : ‘globalVariables’ is not an exported object from ‘namespace:utils’
    Error : unable to load R code in package ‘Hmisc’
    ERROR: lazy loading failed for package ‘Hmisc’
    * removing ‘/home/adrian/R/i686-pc-linux-gnu-library/2.14/Hmisc’

    ¿A qué se puede deber esto?
    Muchas gracias de antemano y un saludo

  22. datanalytics 15 septiembre, 2013 19:00

    Difícil decírtelo. ¿Me puedes escribir un correo y lo vemos?

  23. Ana 19 octubre, 2013 13:45

    Hola! No puedo descargar el paquete:

    package ‘MicroDatosEs’ is not available (for R version 3.0.2), ya no está en r-forge?

  24. datanalytics 19 octubre, 2013 13:49

    Hummmm… debería poder instalarse con install.packages(“MicroDatosEs”, repos=”http://R-Forge.R-project.org”)

    ¿No es el caso?

  25. Ana 19 octubre, 2013 15:00

    > install.packages (“MicroDatosEs”, repos=”http://R-Forge.R-project.org”)

    package ‘MicroDatosEs’ is available as a source package but not as a binary

    Warning message:
    package ‘MicroDatosEs’ is not available (for R version 3.0.2)
    >

  26. datanalytics 19 octubre, 2013 15:35

    @Ana Tienes razón. No sé qué pasa en r-forge que está utilzando todavía una versión de R vieja y no está generando el paquete para Windows.

    Voy a subirlo a CRAN y espero que eso solucione los problemas. Te aviso cuando esté.

    ¡Y gracias por tu interés en el paquete!

  27. Ana 22 octubre, 2013 9:07

    Gracias a ti por crear y compartir este valioso paquete

  28. Ana 24 octubre, 2013 17:35

    Lo tengo! Mil gracias!!!!

  29. SERGIO 19 marzo, 2014 15:16

    Hola, para leer los microdatos que ha publicado recientemente el INE del Censo 2011, ¿podré hacerlo a través de la extension MicroDataES?, de no ser así, ¿cómo puedo leer esos datos?
    Estoy empezando en R por lo que no tengo mucha idea aún, muchas gracias.

  30. Carlos J. Gil Bellosta 19 marzo, 2014 19:17

    Pues todavía no forma parte del paquete, pero espero tenerlo pronto preparado. De todos modos, hay una guía sobre cómo adaptar el paquete para añadir los metadatos necesarios para leer nuevos tipos de microdatos. Y no es complicado.

  31. Guillermo 30 mayo, 2014 15:23

    Estoy intentando importar los datos de la EPF (http://www.ine.es/prodyser/micro_epf2006.htm) para procesarlos en R y he topado con este proyecto. ¿dónde puedo encontrar la guía sobre cómo adaptar el paquete para añadir los metadatos necesarios para leer nuevos tipos de microdatos?

    Gracias!

  32. Carlos J. Gil Bellosta 30 mayo, 2014 16:04

    El problema de la EPF es que, a diferencia de otras, tiene tres ficheros de microdatos. Además, uno de ellos es bastante grande. Tengo que hacer unos cambios en el paquete para acomodarla.

    Dicho lo cual, un colega me mandó hace un tiempo metadatos para cargarla (no sé si parcialmente). Tengo aún pendiente echarles un vistazo.

    Si quieres, escríbeme y miramos cómo se puede incorporar. Hay gente interesada en el asunto.

Los comentarios están desabilitados.