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, uncsvo un.duckdb- dbdir
(opcional) Direccion donde guardar la base de datos con terminacion
.duckdb. Corresponde al argumento deduckdb::dbConnect__duckdb_driver()- tblname
(opcional) Nombre de la tabla de
duckdbdonde guardar los datos por default se llamacovidmx. Solo es relevante si estas usando el mismodbdirpara 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(defaultduckdb::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(siduckdb) o tibble (sitibble)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
# }