El API de Junar es la base para varias iniciativas de Datos Abiertos en Latino
América y los EEUU. El paquete junr
facilita el acceso a estos datos desde R.
El objetivo es fomentar el uso de los datos disponibles haciendo el acceso lo
mas fácil. Algunos ejemplos de implementaciones son: el Portal de Datos
Abiertos del Gobierno de Costa
Rica y la Ciudad
de Córdoba (Argentina)
entre otros. Otros se pueden encontrar en el sitio web de Junar.
El paquete se ha publicado en CRAN y po lo tanto se puede instalar directamente en R usando:
install.packages("junr")
Si prefieres la última versión en desarrollo la puedes encontrar en Github e
instalar usando devtools
como descrito en la pagina
github.com/fvd/junr
Mientras el API de Junar es parte de una plataforma comercial de Junar Inc., el uso de los datos en todas la implementaciones mencionadas arriba no tiene costo para el usuario. Junar fue diseñado para facilitar la apertura de datos y fomentar el uso de datos abiertos. Como usuario necesitas crear un nuevo API-Key para cada colección de conjuntos de datos que te interesan, pero esto no tiene costo.
Como ejemplo vamos a usar los datos de la casa presidencial de Costa
Rica. Lo primero es ir al sitio
correspondiente para encontrar el URL base (base_url
) y obtener un API Key
para obtener acceso al API de Junar en la página de Datos Abiertos Costa
Rica.
library(junr)
url_base <- "http://api.datosabiertos.presidencia.go.cr/api/v2/datastreams/"
api_key <- "0bd55e858409eefabc629b28b2e7916361ef20ff"
Miremos primero cuales datos hay disponibles en este URL (hojearlos).
get_index(url_base, api_key)
No mostramos los resultados aquí porque el indice es la lista completa con todos los meta-datos incluidos como una hoja de datos (data frame) en R.
Para tener solo una lista de los GUID la instrucción es:
list_guid(url_base, api_key)
## [1] "EJECU-DE-PRESU-DE-INSTI" "DESCR-DE-ABREV-DE-LAS"
## [3] "DATOS-CORRE-AL-PAGO-32327" "DATOS-CORRE-AL-PAGO-DE"
## [5] "EJECU-DE-PRESU-DE-50724" "VISTA"
## [7] "INFOR-DE-HORAS-EXTRA-7" "INFOR-DE-HORAS-EXTRA-01"
## [9] "INFOR-DE-HORAS-EXTRA-67320" "PLANI-DE-SALAR-PRESI-DE"
## [11] "PLANI-DE-SALAR-MINIS-65188" "LICIT-ADJUD-POR-LAS-81483"
## [13] "LICIT-ADJUD-DE-LAS-INSTI" "LICIT-ADJUD-POR-LAS-INSTI"
## [15] "LICIT-ADJUD-POR-LOS-MINIS" "PLANI-DEL-MINIS"
## [17] "COMPR-PUBLI-DE-PRESI" "COMPR-PUBLI-DEL-MINIS"
Y solo un listado de los títulos.
list_titles(url_base, api_key)
## [1] "Ejecución de presupuesto de Instituciones para el 2015"
## [2] "Descripción de abreviaturas de las ejecuciones "
## [3] "Datos correspondientes al pago de planilla del Ministerio"
## [4] "Presidencia de la República"
## [5] "Ejecución de presupuesto de Instituciones para el 2014"
## [6] "Informe de Horas Extra: 01 de enero 2016 al 30 de abril 2016"
## [7] "Informe de Horas Extra: 7 de mayo 2014 al 31 de diciembre 2014."
## [8] "Informe de Horas Extra: 01 de enero 2015 al 31 de diciembre de 2015"
## [9] "Informe de Horas Extra: 01 de enero 2015 al 31 de diciembre de 2015"
## [10] "Abril 2016: Planilla de Salarios Presidencia de la República"
## [11] "Abril 2016: Planilla de salarios: Ministerio de la Presidencia"
## [12] "Licitaciones adjudicadas por las Instituciones Públicas según tipo de trámite"
## [13] "Licitaciones Adjudicadas de las Instituciones Públicas para el período 2014-2015"
## [14] "Licitaciones adjudicadas por las Instituciones Públicas según año"
## [15] "Licitaciones adjudicadas por los Ministerios"
## [16] "Ministerio de la Presidencia"
## [17] "Compras públicas de Presidencia"
## [18] "Compras públicas del Ministerio de la Presidencia"
Tanto list_guid()
como list_titles()
fueron escritos para hacernos la vida
mas fácil ya que los resultados tienden a ajustarse a una ventana de consola,
lo cual lo hace mas fácil leerlos. Ayudan para tener una sobrevista rápida de
los datos que hay disponibles.
Necesitas conocer el Identificador Global Único (GUID) de los datos que son de tu interés para poder bajar los datos a tu sesión de R. Puedes buscar el GUID en la página web. Por ejemplo para en la pagina de compras publicas del sitio de Datos Abiertos de Costa Rica hay una tabla con el titulo "Compras Públicas del Ministerio de la Presidencia". En el menu debajo de la tabla existe la opción "obtener GUID". Esta última abre una ventana con el GUID "COMPR-PUBLI-DEL-MINIS" que vamos a usar aquí abajo.
guid_datos <- "COMPR-PUBLI-DEL-MINIS"
datos_compras <- get_data(url_base, api_key, guid_datos)
Con View(datos_compras)
podrás comprobar que los datos han sido bajado desde
la plataforma Junar y han sido convertidos a una hoja de datos (data frame)
en R (mira mas abajo para convertir datos de divisas a números).
Observa que no necesitamos ir a la interfaz para buscar los GUID de los
conjuntos de datos que nos interesan. Con la función list_guid()
como la
usamos arriba obtuvimos la misma información.
datos_disponibles <- list_guid(url_base, api_key)
datos_disponibles[3]
## [1] "DESCR-DE-ABREV-DE-LAS"
Obtenemos el GUID que queremos indicando que es el tercero en la lista (mira la
lista completa mas arriba). Y el mismo índice se puede usar en una lista de los
títulos completos que podemos crear con la función list_titles()
.
En las plataformas que corren en Junar se encuentran muchos datos que no son mas que tablas (datos ya trabajados y resumidos). Por eso es útil poder ver de una vez cuantos filas hay detrás de cada GUID en el URL disponible.
En junr
lo puedes hacer rápidamente usando la función get_dimensions
para
obtener una tabla con todos los GUID y las dimensiones de los datos:
get_dimensions(url_base, api_key)
## GUID NROW NCOL DIM
## 2 COMPR-PUBLI-DEL-MINIS 324 4 1296
## 21 EJECU-DE-PRESU-DE-INSTI 8867 39 345813
## 3 DESCR-DE-ABREV-DE-LAS 27 4 108
## 4 DATOS-CORRE-AL-PAGO-32327 5561 10 55610
## 5 DATOS-CORRE-AL-PAGO-DE 2472 10 24720
## 6 EJECU-DE-PRESU-DE-50724 9249 40 369960
## 7 VISTA 386 8 3088
## 8 INFOR-DE-HORAS-EXTRA-7 182 7 1274
## 9 INFOR-DE-HORAS-EXTRA-01 386 7 2702
## 10 INFOR-DE-HORAS-EXTRA-67320 386 7 2702
## 11 PLANI-DE-SALAR-PRESI-DE 3296 13 42848
## 12 PLANI-DE-SALAR-MINIS-65188 6070 14 84980
## 13 LICIT-ADJUD-POR-LAS-81483 7 2 14
## 14 LICIT-ADJUD-DE-LAS-INSTI 103471 7 724297
## 15 LICIT-ADJUD-POR-LAS-INSTI 3 2 6
## 16 LICIT-ADJUD-POR-LOS-MINIS 10 2 20
## 17 PLANI-DEL-MINIS 5561 8 44488
## 18 COMPR-PUBLI-DE-PRESI 427 4 1708
Por lo menos en los datos ejemplo arriba, pero posiblemente en mas implementaciones de Junar, hay que limpiar todos los datos que corresponden a divisas. En nuestro caso hay que buscar todos los símbolos de la divisa (Colon Costarricense), y todas las comas ya que estas hacen que para R son valores de Texto y no números.
Hay un para de utilidades para hacerlo clean_currency
y get_currency_symbol
.
Por ejemplo:
datos_con_divisas <- get_data(url_base, api_key, "LICIT-ADJUD-POR-LOS-MINIS")
datos_con_divisas$`Monto Adjudicado` <- clean_currency(datos_con_divisas$`Monto Adjudicado`)
Agradecimientos y Notas
junr
o si tienes
preguntas, sígueme o mándame un mensaje a través de Twitter
@fransvandunne