uso de r para generación de tablas resumen · para la lectura de archivos de excel podemos usar...
TRANSCRIPT
1
Uso de R para generación de tablas resumen
Diez Lázaro, Olga
Pinar Izquierdo, Verónica
Rodríguez Rodríguez, Jesús María
Dirección General de Presupuestos y Estadística de la Junta de Castilla y León
Resumen:
Entre los trabajos estadísticos que se desarrollan en la Administración Pública está la realización de tablas
resumen. Es interesante mecanizar los procesos para agilizar la obtención de las tablas. En ocasiones es
más costosa la programación para la automatización que la elaboración de la tabla, pero cuando dicha
elaboración se realiza periódicamente, merece la pena realizar este esfuerzo.
Aunque hay muchos programas que permiten realizar de forma automática ciertos procesos, en la Dirección
General de Presupuestos y Estadística se está utilizando R por su carácter de software libre y gratuito, su
orientación a la realización de cálculos estadísticos, la cantidad de librerías que existen y la posibilidad de
crear librerías propias.
En esta ponencia se hará una breve descripción de como la Dirección General de Presupuestos y
Estadística de Castilla y León está utilizando R para estos trabajos.
Palabras clave : tablas resumen, datos, R.
Uso de R para generación de tablas resumen
Diez Lázaro, Olga; Pinar Izquierdo, Verónica; Rodríguez Rodríguez, Jesús María 2
1. INTRODUCCIÓN
Entre los trabajos estadísticos que se desarrollan en la Administración Pública está la realización de tablas
resumen. En la Dirección General de Presupuestos y Estadística tenemos muchas consultas periódicas
cuyo proceso de obtención es siempre el mismo. A partir de unos datos que pueden estar en diferentes
formatos se realiza un tratamiento apropiado para tabularlos y obtener un archivo Excel con tablas resumen.
También hay operaciones anuales para las que año tras año tenemos que realizar los mismos pasos y que,
al igual que antes, el resultado final es un archivo Excel con tablas resumen.
Mecanizar los procesos para agilizar la obtención de las tablas es una manera de ganar tiempo en la
elaboración de estas tabulaciones; a pesar de que en ocasiones es más costosa la programación para la
automatización que la elaboración de la tabla, cuando dicha elaboración se realiza periódicamente merece
la pena realizar este esfuerzo.
Hay que tener en cuenta que para la generación de tablas resumen lo primero de lo que se debe disponer
es de los datos de los que se quiere hacer la tabulación, una vez leídos y tratados adecuadamente se
tabulan y luego se prepara una tabla en Excel con el formato que en la Dirección General de Presupuestos
y Estadística tenemos como estándar.
Hay muchos programas que permiten realizar de forma automática estos pasos, en la Dirección General de
Presupuestos y Estadística se está utilizando R por su carácter de software libre y gratuito, su orientación a
la realización de cálculos estadísticos, la cantidad de librerías que existen y la posibilidad de crear librerías
propias.
2. LECTURA DE DATOS
Como hemos dicho antes, lo primero de lo que se debe disponer es de los datos de los que se quiere hacer
la tabulación, por eso el primer paso es hacer una lectura o importación de los mismos.
Los datos se pueden obtener de distintas fuentes y pueden encontrarse en diversos formatos. Vamos a
considerar diferentes formas en las que podemos encontrar datos a través de cuatro casos prácticos que se
están llevando a cabo en la Dirección General de Presupuestos y Estadística, explicando cómo estamos
procediendo con R en todos esos casos.
2.1. Datos de consultas al SIE
En este caso los datos se obtienen a partir de una consulta al almacén de datos multidimensional que la
Dirección General de Presupuestos y Estadística pone a disposición de los usuarios a través de su página
web (www.estadistica.jcyl.es), el Sistema de Información Estadística:
Uso de R para generación de tablas resumen
Diez Lázaro, Olga; Pinar Izquierdo, Verónica; Rodríguez Rodríguez, Jesús María 3
Uso de R para generación de tablas resumen
Diez Lázaro, Olga; Pinar Izquierdo, Verónica; Rodríguez Rodríguez, Jesús María 4
Así por ejemplo es muy habitual que nos pidan información variada (población, nacimientos, defunciones,
paro registrado, ..) a nivel municipal. Normalmente la información la tenemos que facilitar en una tabla, que
habitualmente hacemos en Excel con datos del módulo de Datos básicos.
Para hacer esto de manera manual se accede al módulo, se eligen indicadores, periodo, municipio, se
descarga el fichero csv con los datos solicitados y se procede a la tabulación en Excel dando como
resultado una ficha resumen con una serie de indicadores municipales con el siguiente aspecto:
Uso de R para generación de tablas resumen
Diez Lázaro, Olga; Pinar Izquierdo, Verónica; Rodríguez Rodríguez, Jesús María 5
Este proceso no es costoso pero se realiza habitualmente para diferentes municipios por lo que en la DGPE
se ha creado un programa para automatizarlo y que además pueda ser utilizado por personas que no
tengan conocimientos de R.
Lo que se hace es crear una interface básica que permite a través de un desplegable elegir el municipio y
en un cuadro seleccionar los años de los que se desea descargar la información del módulo de Datos
básicos.
Permite elegir el municipio entre todos los de Castilla y León o filtrar eligiendo primero la provincia (de ese
modo se reduce el desplegable de municipios a los de la provincia elegida). Permite también elegir si se
quieren obtener los indicadores del módulo para la provincia del municipio y para la Comunidad.
Para crear esta ventana y todos su botones se utiliza la librería tcltk2 .
Cuando se pincha en “Realizar los cálculos” el programa lo que hace es acceder al módulo, coger los datos,
tratarlos y devolver el Excel. En este apartado vamos a ver solo el acceso a los datos.
Habitualmente en este módulo se pueden descargar los ficheros csv escribiendo en el navegador la cadena
de texto que se obtiene concatenando una URL base y unos parámetros que permiten diseñar la tabla con
los datos que queremos.
Con el programa el acceso al módulo se hace con una conexión utilizando las funciones url y URLencode.
El aspecto de los datos en R una vez aplicada la función readLines al csv que devuelve la conexión es:
Uso de R para generación de tablas resumen
Diez Lázaro, Olga; Pinar Izquierdo, Verónica; Rodríguez Rodríguez, Jesús María 6
Los datos que han sido leídos con una conexión pasan a ser un dataframe con la función read.csv y tienen
el siguiente aspecto:
Posteriormente ya se trataran para volcarlos en un Excel y se verá en siguientes apartados.
2. 2. Datos de archivos pcaxis descargados de inter net
En este caso los datos pcaxis que solemos utilizar son de la página web del INE. Vamos a utilizar el ejemplo
de la submuestra de la EPA.
El día que el INE cuelga la submuestra en su web, en la Dirección General de Presupuestos y Estadística
se hacen tablas con los datos que se publican y se cuelga la información en nuestra propia web. Se utilizan
los pcaxis porque los microdatos no se tienen en ese momento y se tarda un tiempo (aunque cada vez es
menor) en disponer de los mismos, y porque además las tablas se construyen con Castilla y León y España
y los microdatos solo se tienen para Castilla y León.
Uso de R para generación de tablas resumen
Diez Lázaro, Olga; Pinar Izquierdo, Verónica; Rodríguez Rodríguez, Jesús María 7
Lo que se hace es descargar los pcaxis de manera automática. Para ello se analiza el camino donde están
los archivos. La estructura del camino es la misma y cambia el nombre del fichero:
Después de varias pruebas para ver cuál era la opción más eficaz se utiliza un for cuyo índice abarca los
ficheros y la función download.file para guardar los archivos pcaxis en un directorio por si hay que realizar
alguna comprobación no tener que volver a entrar a descargarlo.
La otra opción de descarga es a través de una conexión con url, lectura del resultado con readLines y
guardado con writeLines.
Además de guardarlo se hacen comprobaciones con read.px de la librería pxR puesto que en ocasiones
hay saltos en el nombre de los archivos y no son consecutivos o porque no se ha leído correctamente (se
verá al final este inconveniente).
Una vez comprobado que es correcto se convierte el fichero leído con la función anterior a un dataframe con
as.data.frame para luego poder realizar tabulaciones del mismo, que se comenta como en el siguiente
apartado.
Uso de R para generación de tablas resumen
Diez Lázaro, Olga; Pinar Izquierdo, Verónica; Rodríguez Rodríguez, Jesús María 8
2. 3. Ficheros de microdatos
Los ficheros de microdatos pueden estar en distintos formatos: un txt con ancho fijo, un txt con delimitador,
un csv, …. En la mayoría de las ocasiones solemos tratar ficheros txt con ancho fijo.
A modo de ejemplo, y como complemento al apartado anterior, vamos a comentar como hemos tratado con
R los microdatos de la submuestra de la Encuesta de Población Activa. Como decíamos antes tardamos en
disponer de ellos por lo que el estudio inicial de la submuestra no se hace con los mismos, los utilizamos
para ampliar información de Castilla y León.
En este caso, los datos vienen en un formato de texto plano (con extensión txt) y son de fácil lectura en R.
Mediante el diseño de registro sabemos en qué posición empieza y termina cada uno de los campos, así
como la descripción de los mismos.
Lo que hacemos en primer lugar es leer diseño de registro que en este caso tenemos en un fichero de
Excel. Para facilitar la lectura del diseño eliminamos las filas y columnas intermedias que pueda contener el
fichero, hasta conseguir un fichero con el siguiente aspecto:
Para la lectura de archivos de Excel podemos usar varias funciones de varias librerías, dependiendo de las
características del archivo. Las librerías que nosotros solemos utilizar son la librería readxl y la librería xlsx .
Uso de R para generación de tablas resumen
Diez Lázaro, Olga; Pinar Izquierdo, Verónica; Rodríguez Rodríguez, Jesús María 9
En este caso concreto nos es más útil usar la función read.xlsx2 de la librería xlsx , puesto que así
obtendremos directamente un dataframe que contiene la información relativa al diseño de registro, y de este
modo es más tratable que si utilizamos otras funciones.
En segundo lugar, una vez que tenemos leída la información sobre los campos, procedemos a leer el
archivo de microdatos plano mediante la función read.fwf donde indicamos la longitud de cada campo
mediante el parámetro ‘widths’.
Ahora ya disponemos de los datos en un dataframe de donde podemos extraer las tabulaciones que
necesitemos. Esto lo explicaremos en el apartado de creación de tablas.
2. 4. Datos cargados en Oracle
En este caso los datos se obtienen a partir de una consulta a tablas de Oracle. Es muy habitual que nos
pidan información sobre comercio exterior de Castilla y León con un determinado país: exportaciones,
importaciones y saldo comercial en miles de euros, tasa de cobertura, posición que ocupa el país en el
ranking de exportaciones e importaciones, desagregación por destino económico, por nivel tecnológico, por
provincia y por partida.
Uso de R para generación de tablas resumen
Diez Lázaro, Olga; Pinar Izquierdo, Verónica; Rodríguez Rodríguez, Jesús María 10
Para hacer esto de manera manual se accede a Oracle, se hacen diferentes consultas, se tabulan y se
pasan a un Excel con el siguiente aspecto:
Este proceso es costoso y exige programación de cierto nivel. Como se realiza con frecuencia para
diferentes países se ha creado un programa para automatizarlo y que además pueda ser utilizado por
personal que no maneje R.
Al igual que con los accesos a SIE se crea una interface básica que permite a través de un desplegable
elegir el país y en el cuadro inferior el año por el que se quiere un ranking.
Uso de R para generación de tablas resumen
Diez Lázaro, Olga; Pinar Izquierdo, Verónica; Rodríguez Rodríguez, Jesús María 11
Para crear esta ventana y todos su botones se utiliza la librería gWidgets2 .
Cuando se pincha en “ok” el programa accede a oracle, coge los datos, los trata y devuelve un Excel. En
este apartado vamos a ver solo el acceso a los datos.
Con el programa el acceso a oracle se hace con una conexión utilizando las funciones dbDriver y
dbConnect. Se hace las consultas a la tabla con dbGetQuery y se obtienen dataframe para luego poder
realizar tabulaciones del mismo, que se comenta como en el siguiente apartado.
3. CREACIÓN DE TABLAS
Las tablas se generan prácticamente de igual manera independientemente de qué datos se tienen, ya que
una vez que tenemos los datos en una dataframe ya podemos elaborar tablas a partir de ellos, pero se va a
comentar cada apartado por separado por algunas peculiaridades:
3. 1. Datos de consultas al SIE
En este caso los datos que habían sido leídos con una conexión y transformados a dataframe no se tabulan
de ningún modo más porque el volcado a Excel se hace de manera directa. Se comentará en el siguiente
apartado.
3. 2. Datos de archivos pcaxis descargados de inter net (INE)
Seguimos con el ejemplo de tratamiento de los datos leídos de pcaxis de la submuestra de la EPA. Para
obtener todo de manera automática, antes de utilizar la función tapply, como aparecen los datos para toda la
serie de años así como para todas las Comunidades Autónomas hay que filtrar año, Castilla y León y
España.
Posteriormente de construida la tabla hay que:
- cambiar la posición de la categoría total al final de cada variable que la tiene total al principio
- cambiar las etiquetas de algunas variables
- quitar los números a las categorías que lo llevan al principio
Como se ha tocado lo elaborado con tapply, para que al volcarla a Excel conserve la información tal cuál de
variables, categorías, … hay que aplicar la función ftable.
Y ya sería volcarla a Excel que se comentará en el siguiente apartado.
Uso de R para generación de tablas resumen
Diez Lázaro, Olga; Pinar Izquierdo, Verónica; Rodríguez Rodríguez, Jesús María 12
3. 3. Ficheros de microdatos
Seguimos con el ejemplo de tratamiento de microdatos de la submuestra de la EPA. Teníamos los datos en
un dataframe en R. Para la creación de tablas usaremos la función tapply indicando el dataframe a tratar y
cuando se indican las variables a utilizar para la tabla se las asigna un formato a los valores mediante una
asignación a un vector con los formatos creados antes. Se pueden meter directamente también filtros.
Se comentará en el siguiente apartado como se pasa a Excel.
Uso de R para generación de tablas resumen
Diez Lázaro, Olga; Pinar Izquierdo, Verónica; Rodríguez Rodríguez, Jesús María 13
3. 4. Microdatos cargados en Oracle
En este caso también se utiliza la función tapply sobre el dataframe para elaborar las diferentes tablas, en
algunos casos a mayores hay que utilizar table, addmargins para añadir columnas con algún cálculo,
transformaciones, asignaciones de valores, filtros, sort.int para la tabla de ranking, ..
Se comentará en el siguiente apartado como se pasa a Excel.
4. ESCRITURA DE LAS TABLAS EN EXCEL
En todos los casos el dataframe se vuelca a Excel utilizando diferente funciones de la librería openxlsx :
createWorkbook
addWorksheet
createStyle
writeData
addStyle
mergeCells
insertImage
setColWidths ….
saveWorkbook
De manera genérica, lo que se suele hacer es crear el libro Excel, crear la hoja para la tabla, se inserta
escudo, se crean estilos (para títulos, cabeceras, fuentes, notas, …), se escribe en la hoja el título de la
tabla y se le da estilo, se añade la tabla y se dan estilos, se dan propiedades a columnas o filas, y se guarda
el libro. En el caso de los ficheros pcaxis de la submuestra se inserta pie de página, se da formato de
página, …..
Como en todos los procesos de este estilo se vuelca una tabla a Excel, en la DGPE se ha creado una
librería llamada tablaxlsx que contiene funciones sencillas para escribir la tabla en un Excel. La función
principal es escribirTabla y se han usado funciones de la librería openxlsx . En algunos de los procesos se
ha usado, pero no en todos, puesto que fue creada con posterioridad a los mismos. Esta función lo que
hace es la parte genérica pero luego se puede personalizar con otras funciones de la librería openxlsx.
Vamos a ver para cada apartado que librería se ha usado y el aspecto de lo que se obtiene.
Uso de R para generación de tablas resumen
Diez Lázaro, Olga; Pinar Izquierdo, Verónica; Rodríguez Rodríguez, Jesús María 14
4. 1. Datos de consultas al SIE
Tal y como se quería el resultado del proceso es un Excel:
En este caso se usan funciones de la librería openxlsx tal y como se ha comentado antes con unos estilos
creados para este proceso.
4. 2. Datos de archivos pcaxis descargados de inter net (INE)
Tal y como se quería el resultado del proceso son varios Excel, cuyo aspecto es el siguiente:
Uso de R para generación de tablas resumen
Diez Lázaro, Olga; Pinar Izquierdo, Verónica; Rodríguez Rodríguez, Jesús María 15
Cada tabla de estos archivos son así:
Estos archivos se ponen a disposición de los usuarios en nuestra página web:
Uso de R para generación de tablas resumen
Diez Lázaro, Olga; Pinar Izquierdo, Verónica; Rodríguez Rodríguez, Jesús María 16
En este caso se usa escribirTabla de la librería tablaxlsx para el volcado de la tabla pero creando formatos
especiales distintos a los que hay por defecto en dicha librería puesto que el formato de estas tablas es
Uso de R para generación de tablas resumen
Diez Lázaro, Olga; Pinar Izquierdo, Verónica; Rodríguez Rodríguez, Jesús María 17
diferente al que habitualmente usamos (createStyle) y se utilizan también otra serie de funciones de
openxlsx , las que se han citado al inicio del epígrafe y otras no citadas puesto que se utilizan aquí
específicamente para dar formato a pies de página, formato de página, eliminar división de celdas, …:
pageSetup
showGridLines
setRowHeights
setHeaderFooter
También se utiliza la función bordear de la librería tablaxlsx
En el volcado a Excel el nombre del apartado de la submuestra al que se refieren los datos, el título de la
tabla, el nombre de la pestaña, el título para el índice y para la tabla, las unidades, … se cogen del archivo
pcaxis leído con read.px y el nombre de la variable de la cabecera de columna del dataframe.
El archivo Excel sale totalmente automático, lo único que se modifica en él es que se añaden hipervínculos
porque la función de R que utilizamos en otros casos no es compatible con la versión actual.
4. 3. Ficheros de microdatos
En este caso la escritura puede ser similar al apartado anterior. Se usan ambas librerías.
Diez Lázaro, Olga; Pinar Izquierdo, Verónica; Rodríguez Rodríguez, Jesús María
4. 4. Microdatos cargados en Oracle
El resultado del proceso es un Excel con el siguiente aspecto:
En este caso se usan funciones de la librería
creados para este proceso.
Estas tablas se suelen facilitar a medios de comunicación que las solicit
de nota de prensa realizadas a partir de lo facilitado:
Uso de R para generación de tablas resumen
Verónica; Rodríguez Rodríguez, Jesús María
Oracle
proceso es un Excel con el siguiente aspecto:
En este caso se usan funciones de la librería openxlsx tal y como se ha comentado antes con unos est
Estas tablas se suelen facilitar a medios de comunicación que las solicitan. Se muestran un par de ejemplos
de nota de prensa realizadas a partir de lo facilitado:
Uso de R para generación de tablas resumen
18
tal y como se ha comentado antes con unos estilos
an. Se muestran un par de ejemplos
Uso de R para generación de tablas resumen
Diez Lázaro, Olga; Pinar Izquierdo, Verónica; Rodríguez Rodríguez, Jesús María 19
5. VENTAJAS E INCONVENIENTES
- La gran ventaja es que una vez programado se gana mucho tiempo, pero está la desventaja de tener
el código creado y que cambie como se ofrece la información o la ruta de acceso (esto suele pasar
con algunas descargas de INE, pero se suele solventar estudiando de nuevo como van las rutas).
- La descarga de los ficheros pcaxis del INE suele ir muy lenta en el momento inicial de la publicación
porque hay muchos usuarios accediendo y en ocasiones hay que utilizar un bucle de control para
poder lanzar el proceso de descarga varias veces y que solo descargue si el fichero no está
descargado, que dada la estructura de los ficheros pcaxis es fácil saberlo porque si no lo descarga
aparece en uno de los campos “La.tabla.introducida.no.existeDATA”. A pesar de esto es mucho más
rápido que bajar los ficheros uno a uno.
- Si Oracle se cae o una web no funciona, bien el SIE o la del INE, los procesos no pueden llevarse a
cabo, excepto el de microdatos.
- Otra ventaja es que algunos procesos pueden llevar interface y no es necesario tener conocimientos
de R.