read_datos_abiertos_zip {covidmx}R Documentation

Auxiliares de lectura para la base de la Direccion General de Epidemiologia

Description

La funcion principal es read_datos_abiertos() la cual decide si los lee de zip, duckdb o csv Tambien puedes usar las auxiliares respectivas

Usage

read_datos_abiertos_zip(
  datos_abiertos_zip_paths,
  diccionario_zip_path = NULL,
  diccionario_unzipped_path = NULL,
  diccionario = NULL,
  read_format = c("duckdb", "tibble"),
  tblname = "covidmx",
  drv = duckdb::duckdb(),
  dbdir = tempfile(fileext = ".duckdb"),
  colClasses = get_col_class(),
  download_process = c("pins", "download.file"),
  site.covid.dic = paste0("http://datosabiertos.salud.", "gob.mx/gobmx/salud/datos_a",
    "biertos/diccionario_datos_", "covid19.zip"),
  unzip_command = Sys.getenv("unzip_command"),
  unzip_args = Sys.getenv("unzip_args"),
  unzip_args_dict = list(exdir = ".", overwrite = TRUE),
  check_unzip_install = TRUE,
  clear_zip = (download_process[1] != "pins"),
  clear_csv = TRUE,
  use_dict = TRUE,
  quiet = FALSE,
  cache_datos = NULL,
  use_cache_on_failure = TRUE,
  cache_diccionario = NULL,
  force_download = FALSE,
  show_warnings = TRUE,
  board_url_name = "datos_abiertos",
  board_url_name_dict = "diccionario_covid",
  download_file_args = list(method = "curl", destfile = tempfile(), quiet = quiet),
  descarga_db_diccionario_ssa_args = list(),
  ...
)

read_datos_abiertos_csv(
  datos_abiertos_unzipped_path,
  diccionario_zip_path = NULL,
  diccionario_unzipped_path = NULL,
  diccionario = NULL,
  read_format = c("duckdb", "tibble"),
  tblname = "covidmx",
  drv = duckdb::duckdb(),
  dbdir = tempfile(fileext = ".duckdb"),
  colClasses = get_col_class(),
  download_process = c("pins", "download.file"),
  site.covid.dic = paste0("http://datosabiertos.salud.", "gob.mx/gobmx/salud/datos_a",
    "biertos/diccionario_datos_", "covid19.zip"),
  unzip_args_dict = list(exdir = ".", overwrite = TRUE),
  clear_csv = TRUE,
  quiet = FALSE,
  use_cache_on_failure = TRUE,
  cache_diccionario = NULL,
  force_download = FALSE,
  show_warnings = TRUE,
  board_url_name_dict = "diccionario_covid",
  download_file_args = list(method = "curl", destfile = tempfile(), quiet = quiet),
  descarga_db_diccionario_ssa_args = list(),
  ...
)

read_datos_abiertos_duckdb(
  datos_abiertos_tbl,
  drv = duckdb::duckdb(),
  tblname = "covidmx",
  pragma_memory_limit = Sys.getenv("pragma_memory_limit"),
  diccionario_zip_path = NULL,
  diccionario_unzipped_path = NULL,
  diccionario = NULL,
  download_process = c("pins", "download.file"),
  site.covid.dic = paste0("http://datosabiertos.salud.", "gob.mx/gobmx/salud/datos_a",
    "biertos/diccionario_datos_", "covid19.zip"),
  unzip_args_dict = list(exdir = ".", overwrite = TRUE),
  clear_zip = download_process[1] != "pins",
  clear_csv = TRUE,
  use_dict = TRUE,
  quiet = FALSE,
  use_cache_on_failure = TRUE,
  cache_diccionario = NULL,
  force_download = FALSE,
  show_warnings = TRUE,
  board_url_name_dict = "diccionario_covid",
  download_file_args = list(method = "curl", destfile = tempfile(), quiet = quiet),
  descarga_db_diccionario_ssa_args = list(),
  ...
)

Arguments

datos_abiertos_zip_paths

(opcional) Camino a los datos abiertos si ya los descargaste en zip

diccionario_zip_path

(opcional) Camino al diccionario si ya losdescargaste en zip

diccionario_unzipped_path

(opcional) Camino al diccionario csv si ya lo descargaste y descomprimiste el archivo zip en un csv

diccionario

(opcional) Lo que resulta de realizar una descarga del diccionario usando descarga_diccionario

read_format

(opcional) "duckdb" o "tibble" establece el formato de lectura de la base de datos. En la mayoria de los casos "tibble" va a resultar en un error de memoria. La opcion de "duckdb" siempre es mas rapida por lo cual es el default.

tblname

(opcional) Nombre de la tabla de duckdb donde guardar los datos por default se llama covidmx. Solo es relevante si estas usando el mismo dbdir para otro proyecto distinto.

drv

(opcional) Un driver para dbConnect (default duckdb::duckdb())

dbdir

(opcional) Direccion donde guardar la base de datos con terminacion .duckdb. Corresponde al argumento de duckdb::dbConnect__duckdb_driver()

colClasses

(opcional) Clases de la columna para leer en duckdb::read_csv_duckdb().

download_process

(opcional) Metodo para descargar ya sea pins o download.file. Se recomienda pins pues guarda en memoria la fecha de la ultima descarga y analiza si ha pasado mas de un dia desde la descarga. En caso afirmativo verifica si el archivo ha cambiado y si hubo cambios entonces lo descarga.

site.covid.dic

(opcional) Sitio desde el cual descarga del diccionario de datos. La ultima verificacion del sitio fue el 6 de septiembre 2022.

unzip_command

(opcional) Forma de extraer la base de datos de datos abiertos si unzip falla. La forma de llamarla es con system2(unzip_command, args = c(unzip_args, file_download_data)).

unzip_args

(opcional) Argumentos de extraccion de la base de datos de datos abiertos si unzip falla. La forma de llamarla es con system2(unzip_command, args = c(unzip_args, file_download_data)).

unzip_args_dict

(opcional) Lista de argumentos para usar utils::unzip en el diccionario de datos.

check_unzip_install

(opcional) Bandera de verificacion para checar si tienes lo necesario para unzippear los datos en el caso de que unzip no sirva.

clear_zip

(opcional) Si borrar los archivos .zip descargados para el diccionario y los datos abiertos. No se recomienda si estas usando pins. Ve la nota para mas informacion.

clear_csv

(opcional) Si borrar los archivos .csv que se generan despues de abrir el zip. El default es que si pues en general solo requieres el duckdb.

use_dict

(opcional) Si descargar el diccionario de site.covid.dic.

quiet

(opcional) Variable para no mostrar mensajes

cache_datos

(opcional) Direccion donde guardar los datos en memoria usando pins para no tener que volver a descargarlos si nada ha cambiado

use_cache_on_failure

(opcional) Booleana. Establece que si no se pueden descargar datos nuevos utilice los que tenga en memoria. Por default es TRUE.

cache_diccionario

(opcional) Direccion donde guardar el diccionario en memoria usando pins para no tener que volver a descargarlo si nada ha cambiado

force_download

(opcional) Analiza si cambio el pin y descarga datos nuevos en caso afirmativo aunque haya pasado menos de un dia.

show_warnings

(opcional) si arrojar warnings

board_url_name

(opcional) Establece el nombre del pins::board_url para los datos abiertos (si ya usas pins para que no se empalme). Por default se llama datos_abiertos

board_url_name_dict

(opcional) Establece el nombre del pins::board_url para los datos abiertos. Por default se llama diccionario_covid

download_file_args

(opcional) Lista de argumentos adicionales para download.file de los datos si se elige este metodo para descargar.

descarga_db_diccionario_ssa_args

(opcional) Lista con argumentos adicionales para el pins::pin_download de datos abiertos

...

(opcional) Parametros adicionales para DBI::dbConnect.

datos_abiertos_unzipped_path

(opcional) Camino a los datos abiertos csv si ya los descargaste y descomprimiste el archivo zip en un csv

datos_abiertos_tbl

(opcional) Camino a un archivo .duckdb con los datos formateados

pragma_memory_limit

(opcional) Limite de memoria para el programa (ver PRAGMAS). Cambialo a que sea mas o menos la mitad de tu RAM. La forma mas sencilla es como una variable ambiental con Sys.setenv('pragma_memory_limit' = '1GB') por ejemplo para un limite de 1 gigabyte.

Value

Lista de valores:

Note

Para guardar tu base con duckdb cambia el dbdir a un archivo .duckdb. Como ejemplo dbdir = "ejemplo.duckdb".

Examples


# Lee los datos de duckdb una vez descargados
# quita la opción de sites.covid para descargar los de la DGE. 
# Esto es solo un ejemplo.
file_ejemplo <- tempfile(fileext = ".duckdb")

#Estos links deben omitirse en una corrida normal. Se incluyen por ahora como ejemplo
#pero las opciones site.covid.dic y sites.covid deben eliminarse de abajo.
dlink        <- "https://github.com/RodrigoZepeda/covidmx/raw/main/datos_abiertos_covid19.zip"
diclink      <- "https://github.com/RodrigoZepeda/covidmx/raw/main/diccionario_datos_covid19.zip"

#En el ejemplo de R por normas de CRAN tenemos que hacerlo así pero en tu
#computadora puedes solo usar descargar datos sin el if else
if (RCurl::url.exists(dlink) & RCurl::url.exists(diclink)){

  #Necesitamos la base para verificar los reads
  datos_covid <- descarga_datos_abiertos(
    dbdir = file_ejemplo,
    sites.covid = dlink, 
    site.covid.dic = diclink,
    show_warnings = FALSE
  )
  datos_covid$disconnect()
  
  datos_covid <- read_datos_abiertos(file_ejemplo, show_warnings = FALSE, 
                    site.covid.dic = diclink)
  datos_covid$disconnect()

   # Es lo mismo que:
  datos_covid <- read_datos_abiertos_duckdb(file_ejemplo, show_warnings = FALSE,
                                            site.covid.dic = diclink)
  datos_covid$disconnect()

  # Descarga los datos y lee de un zip guardandolos a la vez en
  # base de nombre datos_desde_zip.duckdb
  direccion_zip <- descarga_db_datos_abiertos_tbl(sites.covid = dlink, show_warnings = FALSE,
                                                  site.covid.dic = diclink)
                                                 
  datos_covid <- read_datos_abiertos(direccion_zip,
    dbdir = file_ejemplo,
    site.covid.dic = diclink,
    show_warnings = FALSE
  )
  datos_covid$disconnect()

  # Es lo mismo que:
  datos_covid <- read_datos_abiertos_zip(direccion_zip,
    site.covid.dic = diclink,
    dbdir = file_ejemplo,
    show_warnings = FALSE
  )
  datos_covid$disconnect()

  # Descarga los datos y lee de un csv
  direccion_zip <- descarga_db_datos_abiertos_tbl(sites.covid = dlink, show_warnings = FALSE)
  direccion_csv <- unzip_db_datos_abiertos_tbl(direccion_zip)
  datos_covid   <- read_datos_abiertos(direccion_csv, show_warnings = FALSE, 
                                          site.covid.dic = diclink)
  datos_covid$disconnect()

  # Es lo mismo que:
  direccion_csv <- unzip_db_datos_abiertos_tbl(direccion_zip)
  datos_covid   <- read_datos_abiertos_csv(direccion_csv, show_warnings = FALSE,
                          site.covid.dic = diclink)
  datos_covid$disconnect()
}


[Package covidmx version 0.7.7 Index]