Git Product home page Git Product logo

covidmx's Introduction

covidmx

Project Status: Active – The project has reached a stable, usable state and is being actively developed. R-CMD-check Codecov test coverage CRAN status metacran downloads

💻 Sitio web: https://rodrigozepeda.github.io/covidmx/

Descarga, etiqueta y analiza los datos abiertos de COVID-19 en México. El propósito de este paquete es hacer la descarga, análisis y graficación de manera rápida para que tú no tengas que preocuparte por bajar el archivo a tiempo, agrupar funciones o realizar visualizaciones sino en lo importante: analizar la información.

Instalación

remotes::install_github("RodrigoZepeda/covidmx")

Uso

Puedes descargar la información de variantes de GISAID de la publicación de Github, ocupación hospitalaria de RED IRAG a partir del Github y datos abiertos de la SSA todo con los siguientes comandos.

El proceso está optimizado mediante duckdb para que puedas realizar queries sobre la base de > 15 millones de personas en segundos.

library(covidmx)

#Datos de variantes (cdmx o nacional)
variantes   <- descarga_datos_variantes_GISAID("nacional")

#Datos de ocupación hopsitalaria de Red IRAG ('Estatal' o 'Unidad Médica')
ocupacion   <- descarga_datos_red_irag("Estatal")

#Descarga datos abiertos de covid, guarda en duckdb (mi_archivo_de_datos.duckdb) 
# y te da una conexión
datos_covid <- descarga_datos_abiertos(dbdir = "mi_archivo_de_datos.duckdb") 

Todas las descargas del paquete son inteligentes y si ha pasado poco tiempo desde tu última descarga te pregunta primero antes de comprometerse a descargar de nuevo.

Puedes volver a leer tu base descargada haciendo:

datos_covid <- read_datos_abiertos(dbdir = "mi_archivo_de_datos.duckdb") 

Las funciones principales del paquete son:

#Calcula los casos (totales) por entidad y devuelve un tibble
datos_covid <- datos_covid %>% casos()

#Calcula la cantidad de pruebas realizadas
datos_covid <- datos_covid %>% numero_pruebas()

#Calcula la positividad
datos_covid <- datos_covid %>% positividad()

#Calcula el case fatality rate
datos_covid <- datos_covid %>% cfr()

#Calcula el case hospitalization rate
datos_covid <- datos_covid %>% chr()

#Estimación del número efectivo de reproducción
datos_covid <- datos_covid %>% estima_rt()

#¡Grafica!
datos_covid %>% plot_covid()

Gráfica con los casos de SINAVE de los datos abiertos de las 32 entidades cada una de ellas variando por color.

Nota No olvides citar a GISAID, RED IRAG o SSA y las publicaciones asociadas además del paquete.

Casos (opciones de lectura de datos abiertos)

Todas las opciones de casos:

datos_covid %>% 
  casos(
    #Lista de entidades que deseas
    entidades = c("AGUASCALIENTES", "BAJA CALIFORNIA", 
                  "BAJA CALIFORNIA SUR","CAMPECHE", "CHIAPAS", 
                  "CHIHUAHUA","CIUDAD DE M\u00c9XICO",
                  "COAHUILA DE ZARAGOZA" , "COLIMA", "DURANGO", 
                  "GUANAJUATO", "GUERRERO","HIDALGO", "JALISCO", 
                  "M\u00c9XICO", "MICHOAC\u00c1N DE OCAMPO", 
                  "MORELOS","NAYARIT", "NUEVO LE\u00d3N", "OAXACA", 
                  "PUEBLA", "QUER\u00c9TARO", "QUINTANA ROO", 
                  "SAN LUIS POTOS\u00cd", "SINALOA", "SONORA",
                  "TABASCO", "TAMAULIPAS", "TLAXCALA", 
                  "VERACRUZ DE IGNACIO DE LA LLAVE", 
                  "YUCAT\u00c1N", "ZACATECAS"),
    
    #Si quieres que los resultados salgan por entidad = TRUE o ya agregados = FALSE
    group_by_entidad    = TRUE,
    
    #Selecciona esas entidades a qué tipo de entidad refieren: Unidad Médica, 
    #Residencia o Nacimiento
    entidad_tipo        = "Residencia", 
    
    #Selecciona la fecha para la base de datos: Síntomas, Ingreso, Defunción
    fecha_tipo          = "Ingreso",
     
    #Selecciona todas las variables de clasificación que deseas agregar:
    tipo_clasificacion  = c("Sospechosos","Confirmados COVID", 
                            "Negativo a COVID", "Inválido", 
                            "No realizado"),
    
    #Selecciona si deseas agrupar por la variable tipo_clasificacion
    group_by_tipo_clasificacion = TRUE,
    
    #Selecciona todos los pacientes quieres incluir:
    tipo_paciente      = c("AMBULATORIO", "HOSPITALIZADO", 
                           "NO ESPECIFICADO"),
    
    #Selecciona si agrupar por tipo de paciente
    group_by_tipo_paciente = TRUE,
    
    #Selecciona todas las opciones de Unidad de Cuidado Intensivo
    #del paciente:
    tipo_uci           = c("SI","NO","NO APLICA","SE IGNORA",
                           "NO ESPECIFICADO"),
    
    #Selecciona si agrupar por tipo de unidad
    group_by_tipo_uci  = TRUE,
    
    #Selecciona los sectores del sistema de salud a incluir
    tipo_sector   = c("CRUZ ROJA", "DIF", "ESTATAL", "IMSS", 
                      "IMSS-BIENESTAR", "ISSSTE", 
                      "MUNICIPAL", "PEMEX", "PRIVADA", 
                      "SEDENA", "SEMAR", "SSA", 
                      "UNIVERSITARIO","NO ESPECIFICADO"),
    
    #Selecciona si deseas agrupar por tipo de sector
    group_by_tipo_sector = FALSE,
    
    #Selecciona si deseas sólo los que tuvieron defunción
    defunciones   = TRUE,
    
    #Selecciona los grupos de edad que deseas incluir en rango
    edad_cut      = c(20, 40, 60), #Edades 20-40 y 40-60
    
    #Selecciona si devolver el objeto como tibble
    as_tibble     = TRUE,
    
    #Selecciona si rellenar los conteos (n) con ceros 
    #cuando no haya observaciones.
    fill_zeros    = TRUE,
    
    #Nombre para llamarle en el objeto lista que regresa
    list_name     = "Ejemplo defunciones",
    
    #Otras variables para agrupar no incluidas
    .grouping_vars = c("DIABETES", "SEXO"))
    
#> # A tibble: 
#>    FECHA_INGRESO DIABETES  SEXO EDAD_CAT ENTIDAD_RES CLASIFICACION_FINAL
#>    <date>           <dbl> <dbl> <chr>    <chr>                     <dbl>
#>  1 2020-01-01           2     1 (40,60]  30                            7
#>  2 2020-01-02           2     1 (40,60]  30                            7
#>  3 2020-01-02           2     2 (20,40]  11                            7
#>  4 2020-01-02           2     2 (20,40]  26                            7
#>  5 2020-01-02           2     2 (40,60]  22                            5
#>  6 2020-01-03           1     1 (40,60]  05                            7
#>  7 2020-01-03           1     2 (40,60]  26                            7
#>  8 2020-01-03           1     2 (40,60]  28                            7
#>  9 2020-01-03           2     1 (40,60]  15                            6
#> 10 2020-01-03           2     2 (40,60]  13                            7
#> 11 2020-01-04           2     1 (20,40]  05                            7
#> 12 2020-01-04           2     2 (40,60]  21                            7
#> 13 2020-01-05           1     1 (40,60]  30                            7
#> 14 2020-01-05           1     2 (40,60]  09                            5
#> 15 2020-01-05           2     2 (20,40]  26                            6
#> 16 2020-01-05           2     2 (40,60]  28                            7
#> 17 2020-01-06           1     1 (40,60]  02                            7
#> 18 2020-01-06           1     2 (40,60]  15                            7
#> 19 2020-01-06           2     1 (40,60]  08                            6
#> 20 2020-01-06           2     1 (40,60]  09                            7
#> # … with 8 more variables: TIPO_PACIENTE <dbl>, UCI <dbl>, n <int64>,
#> #   ENTIDAD_FEDERATIVA <chr>, ABREVIATURA <chr>, CLASIFICACIÓN <chr>,
#> #   DESCRIPCION_TIPO_PACIENTE <chr>, DESCRIPCION_TIPO_UCI <chr> 

Más información

covidmx's People

Contributors

rodrigozepeda avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

jennybc

covidmx's Issues

Traducir inglés

Traducir las viñetas, ayudas y funciones al inglés también.

Nuevas clasificaciones COVID / FLU

A partir del 8 de julio 2024 se integraron nuevas clasificaciones en la base de datos y cambió el número de columnas. Por ahora la base llega hasta 2023 al descargarse.

Crear un docker

Armar un docker con MariaDB instalado donde esto corra en automático

Separar descarga de lectura

Para el diccionario de datos y los datos generar 4 funciones
descarga_datos
lee_datos
descarga_diccionario
lee_diccionario

Database de prueba

Generar una base de datos que permita hacer pruebas y crear los testthat necesarios.

cannot open file 'NA/2022.csv': No such file or directory

Con la base más reciente ocurre el siguiente error al correr descarga_db

Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") :
  cannot open file 'NA/2022.csv': No such file or directory

Temporalmente la solución es correr

read_datos_abiertos(datos_abiertos_path = c("./2020.csv","./2021.csv","./datos_abiertos_covid19__.csv"))

después del error para cargar los archivos en duck

Error in donttest

CRAN throws the following error

Running examples in ‘covidmx-Ex.R’ failed
The error most likely occurred in:

> ### Encoding: UTF-8
> 
> ### Name: descarga_datos_abiertos
> ### Title: Descarga de datos abiertos
> ### Aliases: descarga_datos_abiertos
> 
> ### ** Examples
> 
> ## No test: 
> # Descarga de la base de datos junto con diccionario en duckdb y la guarda en
> # un archivo temporal.
> # Puede cambiarse el dlink por el adecuado o dejarse en blanco.
> # quita la opción de sites.covid para descargar los de la DGE. Esto es sólo un ejemplo.
> file_duck <- tempfile(fileext = ".duckdb")
> dlink <- "https://github.com/RodrigoZepeda/covidmx/raw/main/datos_abiertos_covid19.zip"
> datos_covid <- descarga_datos_abiertos(
+   dbdir = file_duck,
+   sites.covid = dlink, show_warnings = FALSE
+ )

── 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.
Error in `descarga_db_datos_abiertos_tbl()`:
! El sitio de dado por:
  <http://datosabiertos.salud.gob.mx/gobmx/salud/datos_abiertos/diccionario_datos_covid19.zip>
  no existe o no puede ser encontrado. Verifica exista y tu conexion a Internet
  sea estable.
Backtrace:
    ▆
 1. └─covidmx::descarga_datos_abiertos(...)
 2.   └─covidmx::descarga_diccionario(...)
 3.     ├─base::do.call(descarga_db_diccionario_ssa, descarga_db_diccionario_ssa_args)
 4.     └─covidmx (local) `<fn>`(...)
 5.       └─covidmx::descarga_db_datos_abiertos_tbl(...)
 6.         └─cli::cli_abort("El sitio de {.strong {names(sites.covid)[sitenum]}} dado por:\n        {.url {site.covid}}\n        no existe o no puede ser encontrado. Verifica exista y tu conexion a Internet sea estable.")
 7.           └─rlang::abort(...)
Execution halted
Warning: Connection is garbage-collected, use dbDisconnect() to avoid this.
Warning: Database is garbage-collected, use dbDisconnect(con, shutdown=TRUE) or duckdb::duckdb_shutdown(drv) to avoid this.
* checking for unstated dependencies in ‘tests’ ... OK
* checking tests ...
  Running ‘testthat.R’ [22s/13s]
 [22s/14s] OK
* checking PDF version of manual ... OK
* checking for non-standard things in the check directory ... OK
* checking for detritus in the temp directory ... OK
* checking for new files in some other directories ... OK
* DONE

Status: 1 ERROR
See
  ‘/data/blackswan/ripley/R/packages/tests-devel/covidmx.Rcheck/00check.log’
for details.

See here

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.