Este paquete reune un conjunto de funciones para facilitar el flujo de trabajo usando con las fuentes utilizadas por investigadores y los outputs generados en el proceso de armonziación (ETL) [^1].
[^1]:Las salidas finales son las que luego se comaprten y actualizan en https://github.com/argendata/data y alimentan el sitio https://argendata.fund.ar/ para descarga de datos.
Para usar muchas de las funciones de este paquete es necesario tener
seteado en el .Renviron
la variable ‘ARGENDATA_DRIVE’
con el id del
directorio de Argendata. Para editar el .Renviron
se puede usar
usethis::edit_r_environ()
. Allí se declara de la siguiente forma:
ARGENDATA_DRIVE='xaskooasdklaslkaldd'
RUTA_FUENTES = "/ruta/al/directorio/etl-fuentes/"
IP_FUENTES = "ruta-ip/al/etl-fuentes/"
Para instalar el paquete se puede clonar este proyecto y luego abrir el proyecto y usar la función
devtools::install_local()
La función también se puede usar sin abrir el proyecto pero hay que
pasarle la ruta a la carpeta del proyecto de argendataR
.
Para instalar directo desde github se puede usar
devtools::install_github("argendatafundar/argendataR")
Pero esta función requiere que esté configurada la variable de entorno
‘GITHUB_PAT’
con el token del PAT
de github del usuario, con el que debe
tener los permisos necesarios para acceder al repositorio.
Para el trabajo con fuentes hay dos grandes conjuntos de funciones: raw
y
clean
. Las primeras se usan para el proceso con fuentes en su estado
original, declaradas por investigadores en su proceso de producción de contenidos;
las segundas para trabajar con fuentes ya limpias o procesadas.
Con agregar_fuente_raw()
se registra una nueva fuente en la sheet
de fuentes
crudas y carga en la carpeta de BASES DE DATOS/Fuentes/raw
el archivo de
path_raw
. A cada fuente se le asigna automaticamente un id numerico que
permite seleccionar la fuente segun aparece en el sheet
. Para consultar
ids usar fuentes_raw()
.
library(argendataR)
## basic example code
agregar_fuente_raw(url = "https://www.ejemplo.com",
nombre = "Ejemplo",
institucion = "Ejemplo",
actualizable = TRUE,
fecha_descarga = "2021-01-01",
fecha_actualizar = "2022-01-01",
path_raw = "ejemplo.csv",
script = "ejemplo.R")
Un bloque de código análogo se espera que se use la primera vez que se ejecute un script de descarga de una fuente desde su origen. Sucesivas descargas de una fuente ya registrada deberían usar en cambio:
actualizar_fuente_raw(id_fuente = 1,
fecha_actualizar = "2023-01-01")
Esta función actualiza ‘fecha_descarga’ y ‘fecha_actualizar’ de una
fuente en la sheet de fuentes en el drive de Argendata. Hace
google::drive_upload()
de la fuente con overwrite = T
pisando la
version anterior en el drive. Las fuentes raw se pueden consultar con
fuentes_raw()
.
Existen funciones analogas para el trabajo con fuentes clean. Estas
refieren a cada salida (en general un archivo .csv
) disponibilizada
a partir de una fuente descargada que debería cumplir con una minima limpieza de nombres de
columnas y estar en formato long
, generalmente. Las funciones no evalúan esas
condiciones pero ayudan en su registro sistematico. Vean los siguientes.
Bloque 1
agregar_fuente_clean(id_fuente_raw = 1,
path_clean = "ejemplo.csv",
nombre = "Ejemplo 1",
script = "ejemplo1.R"
)
Bloque 2
agregar_fuente_clean(id_fuente_raw = 1,
path_clean = "ejemplo.csv",
nombre = "Ejemplo 2",
script = "ejemplo2.R"
)
Muchas fuentes limpias (clean) se pueden relacionar a una misma fuente cruda (raw) pero
cada una debería ser unica. Un bloque de codigo como los anteriores
debería aparecer dentro del script que genera cada fuente limpia y
usarse solo la primera vez que se ejecute el script. Las fuentes limpias se
pueden consultar con fuentes_clean()
. Sucesivas actualizaciones de una
fuente clean ya registrada deberían usar en cambio:
actualizar_fuente_clean(id_fuente_clean = 1)
Esta función actualiza ‘fecha’
de una fuente en la sheet de fuentes
clean en el drive de Argendata y hace google::drive_upload()
de la
fuente con overwrite = T
pisando la version anterior en el drive.
El paquete tambien incluye funciones para el trabajo con outputs. La
principal funcion es write_output()
. Esta funcion genera un json
con
la data y metadata que el proyecto de Argendata requiere para cada
conjunto de datos. Opcionalmente también escribe un csv
usando el estándar de
Argendata (UTF-8
, double quote
agresivo, eol “\n”, na = ““
). Esta
función debería aparecer al final de cada script de generación de
outputs.
write_output( data = df_output,
extension = 'csv',
output_name = 'A1_inb_pib',
subtopico = 'ACECON',
fuentes = 'World Development Indicators',
analista = 'Andrés Salles',
aclaraciones = NULL,
exportar = TRUE,
pk = c("anio", "iso3"),
es_serie_tiempo = TRUE,
columna_indice_tiempo = "anio",
columna_geo_referencia = "iso3",
nivel_agregacion = "pais",
nullables = FALSE,
etiquetas_indicadores = list("diferencia_inb_pbi" = "Diferencia entre Ingreso Bruto Nacional y PBI"),
unidades = "Porcentaje respecto al PBI",
classes = NULL)
Function | Description |
---|---|
Fuentes | |
actualizar_fuente_clean() : |
Actualizar informacion de una fuente clean |
actualizar_fuente_raw() : |
Actualizar informacion de una fuente raw |
agregar_fuente_clean() : |
Agregar nueva fuente clean |
agregar_fuente_raw() : |
Agregar nueva fuente raw |
descargar_fuente_clean() : |
Descarga fuente version clean |
descargar_fuente_raw() : |
Descarga fuente version raw |
fuentes() : |
Fuentes - listado |
fuentes_clean() : |
Fuentes clean - listado |
fuentes_raw() : |
Fuentes raw - listado |
Aux | |
expansor_xvar() : |
Expandir una serie usando variaciones de otra serie |
get_nomenclador_geografico() : |
Devuelve el nomenclador geografico para argendata |
subtopico_init |
Inicializa un nuevo subtopico |
script_subtopico() : |
Crea un .R con el esquema basico de script para outputs |
subtopico_outputs() : |
Consulta lista de outputs del subtopico/entrega en drive |
Control - QA | |
comparar_outputs |
Set de indicadores de comparación entre datos de entrada (investigadores) y outputs generados en proceso de aromnización |
check_cols |
Compara columnas de datos de entrada (investigadores) vs outputs |
check_datatypes |
Compara tipo de datos de columnas de entrada (investigadores) vs outputs |
control_valores_nonnum |
No description available |
control_valores_num |
No description available |
nuevos_na |
Contro de valores perdidos entre datos de entrada (investigadores) y outputs generados |
Outputs | |
write_csv_fundar() : |
write_csv estilo Fundar |
write_output() : |
Genera json y csv con metadata y data de output para argendata |