Lee la base de datos de la direccion general de epidemiologia que ya descargaste
Código:R/read_datos_abiertos.R
read_datos_abiertos.Rd
read_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
, uncsv
o 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
duckdb
donde guardar los datos por default se llamacovidmx
. Solo es relevante si estas usando el mismodbdir
para 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
tibble
s 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
# }