Lee la base de datos de la direccion general de epidemiologia que ya descargaste
Código:R/read_datos_abiertos.R
      read_datos_abiertos.Rdread_datos_abiertos Lee los datos abiertos almacenados en tu base de duckdb que
bajaste con descarga_datos_abiertos. Intenta de manera automática determinar
si los lee de duckdb, csv ó zip
Uso
read_datos_abiertos(
  datos_abiertos_path = NULL,
  dbdir = tempfile(fileext = ".duckdb"),
  tblname = "covidmx",
  pragma_memory_limit = Sys.getenv("pragma_memory_limit"),
  drv = duckdb::duckdb(),
  colClasses = get_col_class(),
  read_format = c("duckdb", "tibble"),
  ...
)Argumentos
- datos_abiertos_path
- (obligatorio) Camino a los datos abiertos si son un - zip, un- csvo un- .duckdb
- dbdir
- (opcional) Direccion donde guardar la base de datos con terminacion - .duckdb. Corresponde al argumento de- duckdb::dbConnect__duckdb_driver()
- tblname
- (opcional) Nombre de la tabla de - duckdbdonde guardar los datos por default se llama- covidmx. Solo es relevante si estas usando el mismo- dbdirpara otro proyecto distinto.
- 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.
- drv
- (opcional) Un driver para - dbConnect(default- duckdb::duckdb())
- colClasses
- (opcional) Clases de la columna para leer en - duckdb::read_csv_duckdb().
- 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.
- ...
- (opcional) parametros adicionales para - descarga_datos_abiertos()
Valor
Lista de valores:
- dats - Tabla conectada mediante - DBI::dbConnect(si- duckdb) o tibble (si- tibble)
- disconnect - Funcion para cerrar la conexion a la base de datos. 
- dict - Lista de - tibbles con el diccionario de datos para cada variable
Nota
Para guardar tu base con duckdb cambia el dbdir a un archivo .duckdb. Como ejemplo
dbdir = "ejemplo.duckdb".
Ejemplos
# \donttest{
#Archivo temporal donde guardar las cosas es cualquier .duckdb
file_duck <- 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"
if (RCurl::url.exists(dlink) & RCurl::url.exists(diclink)){
  # EJEMPLO 0: Descarga los datos abiertos en archivo file_duck
  descarga_datos_abiertos(dbdir = file_duck, sites.covid = dlink, show_warnings = FALSE, 
      site.covid.dic = diclink)$disconnect()
  # EJEMPLO 1: Lee los datos de duckdb una vez descargados
  datos_covid <- read_datos_abiertos(file_duck, show_warnings = FALSE, 
                                      site.covid.dic = diclink) # Lee duckdb
  datos_covid$disconnect()
# EJEMPLO 2: Lee los datos desde un zip descargado
# Descarga archivos de la DGE y guarda el zip
direccion_zip <- descarga_db_datos_abiertos_tbl(sites.covid = dlink, show_warnings = FALSE)
# Lee zip
datos_covid <- read_datos_abiertos(direccion_zip, dbdir = file_duck, show_warnings = FALSE,
                    site.covid.dic = diclink)
datos_covid$disconnect()
# EJEMPLO 3: Lee los datos desde un zip descargado
# Descarga archivos zip de la DGE
direccion_zip <- descarga_db_datos_abiertos_tbl(sites.covid = dlink, show_warnings = FALSE)
direccion_csv <- unzip_db_datos_abiertos_tbl(direccion_zip) # Descomprime el zip para tener csv
# Lee los csv
datos_covid <- read_datos_abiertos(direccion_csv, dbdir = file_duck, show_warnings = FALSE,
                                     site.covid.dic = diclink) 
datos_covid$disconnect()
# EJEMPLO 4: Si ya tenias el diccionario lo puedes agregar
# Simula la idea de ya tener el diccionario
diccionario <- descarga_diccionario(show_warnings = FALSE, site.covid.dic = diclink) 
datos_covid <- read_datos_abiertos(file_duck, diccionario = diccionario, show_warnings = FALSE)
datos_covid$disconnect()
# EJEMPLO 5: Si ya tenias el diccionario como archivo zip
# Descarga el diccionario para tenerlo como zip
diccionario_zip <- descarga_db_diccionario_ssa(show_warnings = FALSE, site.covid.dic = diclink) 
datos_covid <- read_datos_abiertos(file_duck, diccionario_zip_path = diccionario_zip, 
                                    show_warnings = FALSE)
datos_covid$disconnect()
# EJEMPLO 6: Si ya tenias el diccionario como archivo xlsx
# Descarga el diccionario para tenerlo como zip
diccionario_zip <- descarga_db_diccionario_ssa(show_warnings = FALSE, site.covid.dic = diclink)
# Abre el csv del diccionario
diccionario_csv <- unzip_db_diccionario_ssa(diccionario_zip) 
datos_covid <- read_datos_abiertos(file_duck,
  diccionario_unzipped_path = diccionario_csv,
  show_warnings = FALSE
)
datos_covid$disconnect()
}
#> 
#> ── Hola esto es lo que hare hoy para ti: ───────────────────────────────────────
#> 1. Base de datos de covid-19 de la Direccion General de Epidemiologia:
#>   • Descargar las bases de datos abiertos
#>   • Descomprimir las bases de datos abiertos
#>   • Consolidar en una sola base de datos
#> 2. Diccionario de datos de covid-19 de la Direccion General de Epidemiologia:
#>   • Descargar el diccionario
#>   • Descomprimir el diccionario
#>   • Consolidar todos los diccionarios en una lista
#> 3. Unir datos y diccionario en una sola lista
#> 
#> ── Comenzamos (por favor ten paciencia): ───────────────────────────────────────
#> ℹ Descargando la informacion...
#> ℹ Descomprimiendo los archivos .zip...
#> ℹ Consolidando los archivos .csv en duckdb...
#> ℹ Cargando los datos en duckdb...
#> ℹ Conectando a la tabla `covidmx` creada en duckdb...
#> ℹ Eliminando los archivos .csv
#> ✔ Terminado. No olvides desconectar la base con `datos_covid$disconnect()`
#> al terminar de trabajar.
#> ✔ Desconectado
#> 
#> ── Hola esto es lo que hare hoy para ti: ───────────────────────────────────────
#> 1. Base de datos de covid-19 de la Direccion General de Epidemiologia:
#> ✔ Ya lo tienes.
#> 2. Diccionario de datos de covid-19 de la Direccion General de Epidemiologia:
#>   • Descargar el diccionario
#>   • Descomprimir el diccionario
#>   • Consolidar todos los diccionarios en una lista
#> 3. Unir datos y diccionario en una sola lista
#> 
#> ── Comenzamos (por favor ten paciencia): ───────────────────────────────────────
#> ℹ Conectando a la tabla `covidmx` creada en duckdb...
#> ✔ Terminado. No olvides desconectar la base con `datos_covid$disconnect()`
#> al terminar de trabajar.
#> ✔ Desconectado
#> 
#> ── Hola esto es lo que hare hoy para ti: ───────────────────────────────────────
#> 1. Base de datos de covid-19 de la Direccion General de Epidemiologia:
#>   • Descomprimir las bases de datos abiertos
#>   • Consolidar en una sola base de datos
#> 2. Diccionario de datos de covid-19 de la Direccion General de Epidemiologia:
#>   • Descargar el diccionario
#>   • Descomprimir el diccionario
#>   • Consolidar todos los diccionarios en una lista
#> 3. Unir datos y diccionario en una sola lista
#> 
#> ── Comenzamos (por favor ten paciencia): ───────────────────────────────────────
#> ℹ Descomprimiendo los archivos .zip...
#> ℹ Consolidando los archivos .csv en duckdb...
#> ℹ Cargando los datos en duckdb...
#> ℹ Conectando a la tabla `covidmx` creada en duckdb...
#> ℹ Eliminando los archivos .csv
#> ✔ Terminado. No olvides desconectar la base con `datos_covid$disconnect()`
#> al terminar de trabajar.
#> ✔ Desconectado
#> 
#> ── Hola esto es lo que hare hoy para ti: ───────────────────────────────────────
#> 1. Base de datos de covid-19 de la Direccion General de Epidemiologia:
#>   • Consolidar en una sola base de datos
#> 2. Diccionario de datos de covid-19 de la Direccion General de Epidemiologia:
#>   • Descargar el diccionario
#>   • Descomprimir el diccionario
#>   • Consolidar todos los diccionarios en una lista
#> 3. Unir datos y diccionario en una sola lista
#> 
#> ── Comenzamos (por favor ten paciencia): ───────────────────────────────────────
#> ℹ Consolidando los archivos .csv en duckdb...
#> ℹ Cargando los datos en duckdb...
#> ℹ Conectando a la tabla `covidmx` creada en duckdb...
#> ℹ Eliminando los archivos .csv
#> ✔ Terminado. No olvides desconectar la base con `datos_covid$disconnect()`
#> al terminar de trabajar.
#> ✔ Desconectado
#> 
#> ── Hola esto es lo que hare hoy para ti: ───────────────────────────────────────
#> 1. Base de datos de covid-19 de la Direccion General de Epidemiologia:
#> ✔ Ya lo tienes.
#> 2. Diccionario de datos de covid-19 de la Direccion General de Epidemiologia:
#> ✔ Ya lo tienes.
#> 3. Unir datos y diccionario en una sola lista
#> 
#> ── Comenzamos (por favor ten paciencia): ───────────────────────────────────────
#> ℹ Conectando a la tabla `covidmx` creada en duckdb...
#> ✔ Terminado. No olvides desconectar la base con `datos_covid$disconnect()`
#> al terminar de trabajar.
#> ✔ Desconectado
#> 
#> ── Hola esto es lo que hare hoy para ti: ───────────────────────────────────────
#> 1. Base de datos de covid-19 de la Direccion General de Epidemiologia:
#> ✔ Ya lo tienes.
#> 2. Diccionario de datos de covid-19 de la Direccion General de Epidemiologia:
#>   • Descomprimir el diccionario
#>   • Consolidar todos los diccionarios en una lista
#> 3. Unir datos y diccionario en una sola lista
#> 
#> ── Comenzamos (por favor ten paciencia): ───────────────────────────────────────
#> ℹ Conectando a la tabla `covidmx` creada en duckdb...
#> ✔ Terminado. No olvides desconectar la base con `datos_covid$disconnect()`
#> al terminar de trabajar.
#> ✔ Desconectado
#> 
#> ── Hola esto es lo que hare hoy para ti: ───────────────────────────────────────
#> 1. Base de datos de covid-19 de la Direccion General de Epidemiologia:
#> ✔ Ya lo tienes.
#> 2. Diccionario de datos de covid-19 de la Direccion General de Epidemiologia:
#>   • Consolidar todos los diccionarios en una lista
#> 3. Unir datos y diccionario en una sola lista
#> 
#> ── Comenzamos (por favor ten paciencia): ───────────────────────────────────────
#> ℹ Conectando a la tabla `covidmx` creada en duckdb...
#> ✔ Terminado. No olvides desconectar la base con `datos_covid$disconnect()`
#> al terminar de trabajar.
#> ✔ Desconectado
# }