uso de r para generación de tablas resumen · para la lectura de archivos de excel podemos usar...

19
1 Uso de R para generación de tablas resumen Diez Lázaro, Olga [email protected] Pinar Izquierdo, Verónica [email protected] Rodríguez Rodríguez, Jesús María [email protected] 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.

Upload: others

Post on 11-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

1

Uso de R para generación de tablas resumen

Diez Lázaro, Olga

[email protected]

Pinar Izquierdo, Verónica

[email protected]

Rodríguez Rodríguez, Jesús María

[email protected]

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.