Giter Site home page Giter Site logo

rodrigozepeda / covidmx Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 1.0 93.97 MB

Paquete en R para descargar y analizar la información de COVID-19 de México

Home Page: https://rodrigozepeda.github.io/covidmx/

License: Other

R 100.00%
covid-19 covid-data covid19 datos-abiertos datos-gob-mx mexico mexico-datos rstats rstats-package covidmx

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

Database de prueba

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

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

Crear un docker

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

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.

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

Traducir inglés

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

Separar descarga de lectura

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

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.