forked from pablorm296/covidMex
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.Rmd
302 lines (210 loc) · 15.5 KB
/
README.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
---
title: "covidMex"
output:
github_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
Un paquete para obtener datos oficiales sobre casos de Covid-19 en México y el mundo. Creado por [Pablo Reyes](https://twitter.com/pablorm296). Última actualizacion: __`r Sys.time()`__.
## Instalación :package:
Para instalar el paquete, es necesario usar `install_github`, pues el paquete no está disponible en la CRAN.
```r
devtools::install_github("pablorm296/covidMex")
```
## Uso :wrench:
### Básico
#### Casos sospechosos y confirmados en México
Para obtener el reporte oficial más reciente sobre los **casos confirmados en México**, usa la función `covidConfirmedMx`. Para obtener el reporte oficial más reciente sobre los **casos sospechosos en México**, usa la función `covidSuspectsMx`.
```{r message=FALSE, warning=FALSE}
library(covidMex)
# Descargar reporte de casos sospechosos
sospechosos <- covidSuspectsMx()
# Descargar reporte de casos confirmados
confirmados <- covidConfirmedMx()
```
#### Situación en resto del mundo
Para obtener el reporte más reciente sobre **nuevos casos y defunciones en el mundo**, usa la función `covidWWSituation`.
```{r message=FALSE, warning=FALSE}
# Descargar reporte de nuevos casos y defunciones en el mundo
casosCovidMundo <- covidWWSituation()
```
### Avanzado
#### Obtener reportes específicos
`covidConfirmedMx`, `covidSuspectsMx` y `covidWWSituation` son [_wrappers_](https://stat.ethz.ch/pipermail/r-help/2008-March/158393.html) de `getData`.
La función `getData` te permite descargar un reporte oficial específico. Con el parámetro `where` especificas el ámbito del reporte (México o el resto del mundo). Con el parámetro `type` puedes especificar el tipo de reporte a cargar (casos confirmados o casos sospechosos). Con el parámetro `date` especificas la versión del reporte (fecha en que fue publicado). Si no se encuentra la fecha especificada, `getData` intentará descargar el reporte del día anterior y notificará al usuario por medio de una `warning`.
```{r message=FALSE, warning=FALSE}
# Descargar reporte de casos sospechosos en México
sospechosos <- getData(where = "Mexico", type = "suspects", date = "today",
source = "Serendipia", neat = TRUE)
# Descargar reporte de casos confirmados en México
confirmados <- getData(where = "Mexico", type = "confirmed", date = "today",
source = "Guzmart", neat = TRUE)
# Descarga una versión anterior del reporte
sospechosos_old <- getData(where = "Mexico", type = "confirmed", date = "16/03/2020",
source = "Serendipia", neat = TRUE)
# Descarga reporte de situación en resto del mundo
casosCovidMundo <- getData(where = "worldWide", type = "confirmed", date = "today",
source = "ECDC", neat = TRUE)
```
Seguro notaste que `getData` también acepta un parámetro `source`; éste sirve para especificar la fuente de datos a cargar. Por el momento, `getData` usa cuatro fuentes de datos:
1. **Serendipia:** _[Serendipia](https://serendipia.digital/2020/03/datos-abiertos-sobre-casos-de-coronavirus-covid-19-en-mexico/)_, una iniciativa de periodismo de datos que ha publicado versiones .csv y .xlsx (creadas con [I:heart:PDF](https://www.ilovepdf.com/es)) de los reportes publicados por la Secretaría de Salud del Gobierno de México.
2. **covid19_mex:** Un [repositorio en GitHub](https://github.com/guzmart/covid19_mex) creado por [Katia Guzmán Martínez](https://twitter.com/guzmart_). Katia, además de convertirlo en formarto abierto, hace una revisión manual del reporte publicado por la Secretaría de Salud del Gobierno de México. Por esta razón, **esta fuente es la predeterminada al momento de descargar la tabla de casos confirmados para México.** Esta fuente de datos sólo tiene tabla de casos confirmados.
3. **European Centre for Disease Prevention and Control**: La agencia de la Unión Europea encargada de la seguridad sanitaria. Además de publicar un reporte diario sobre casos de Covid-19 y defunciones en países europeos, el ECDC también empezó a publicar reportes de casos en todos los países del mundo independientes a los publicados por la Organización Mundial de la Salud. **Esta fuente es la predeterminada al momento de descargar la tabla de casos confirmados para el resto de países en el mundo.**
4. **Johns Hopkins University Dashboard**: [Repositorio en GitHub](https://github.com/CSSEGISandData/COVID-19) con los datos mostrados en el [mapa interactivo](https://www.arcgis.com/apps/opsdashboard/index.html#/bda7594740fd40299423467b48e9ecf6) del Johns Hopkins University Center for Systems Science and Engineering con datos de casos de Covid-19 en el mundo. La principal fuente de información de este repositorio son los datos publicados por la Organización Mundial de la Salud (OMS). Se incluyó esta fuente de datos porque es, sin duda alguna, uno de los repositorios más populares hasta el momento con datos de la pandemia. Sin embargo, los datos tienen múltiples problemas (registros incorrectos o desactualizados). Además, la OMS cambió su hora de corte el 15 de marzo de 2020, yuxtaponiendo casos correspondientes al día anterior. Esto comprometió las comparaciones entre datos antes y después de esa fecha. Por estas razones, el ECDC es la fuente predeterminada cuando se trata de datos para países del resto del mundo.
```{r message=FALSE, warning=FALSE}
# Descargar reporte de casos confirmados en México
# Usamos el repositorio de Katia
confirmados <- getData(where = "Mexico", type = "confirmed", date = "today",
source = "Guzmart", neat = TRUE)
# Descargar reporte de casos confirmados en México
# Esta vez, especificando que queremos usar el sitio de Serendipia
confirmados <- getData(where = "Mexico", type = "confirmed", date = "today",
source = "Serendipia", neat = TRUE)
# Descarga reporte de casos en el resto del mundo
# Especificamos que lo queremos desde el repositorio de la Johns Hopkins University
casosCovidMundo <- getData(where = "worldWide", type = "confirmed", date = "today",
source = "JHU", neat = TRUE)
```
Adicionalmente, cada vez que el usuario cargue el paquete, un mensaje le notificará las fuentes de datos disponibles:
```r
library(covidMex)
```
```{r echo=FALSE}
covidMex::startUpMessage()
```
El último parámetro de `getData` es `neat`. Este parámetro le informa a la función si el usuario desea pre procesar el `tibble` obtenido de las fuentes de datos, de manera que las fechas son tratadas como objetos `Date`, los nombres de las entidades federativas se ponen en mayúscula y los nombres de las columnas son transformados al estandar que maneja [el repositorio de Katia Guzmán](https://github.com/guzmart/covid19_mex). Puedes usar el parámetro `neat = FALSE` para obtener una versión _as is_ del reporte.
#### Una nota sobre los parámetros
Debido a la variedad de fuentes de datos y formatos en los que se presentan estos, cuando usas `getData`, debes tener en cuenta que no todas las combinaciones de parámetros son posibles. Por favor, toma en cuenta la siguiente tabla. En ella, podras ver los parámetros válidos dado un valor de `where`.
| Where | Source | Type | Date | Neat |
|-----------|------------|---------------------|----------------------------------------------------|-------------|
| Mexico | Serendipia | confirmed, suspects | today o cualquier fecha del 15/03/2020 en adelante | TRUE, FALSE |
| Mexico | Guzmart | confirmed | today o cualquier fecha del 16/03/2020 en adelante | TRUE, FALSE |
| worldWide | ECDC | confirmed | today o cualquier fecha del 01/01/2020 en adelante | TRUE, FALSE |
| worldWide | JHU | confirmed | today o cualquier fecha del 24/01/2020 en adelante | TRUE, FALSE |
### Generando gráficas a partir de los datos
```{r include=FALSE}
library(tidyverse)
library(extrafont)
```
#### Edades de los infectados en México
```{r message=FALSE, warning=FALSE}
# Tabla de casos confirmados
covidConfirmedMx() %>%
# Asignar casos a grupos de edad (10 grupos; 0-10, 11-20, 19-30... 81-90, 90+)
mutate(GrupoEdad = cut(edad,
breaks = c(seq(0, 90, by = 10), Inf),
include.lowest = T)) %>%
# ggplot!
ggplot() +
geom_bar(aes(x = GrupoEdad, y = ..count..), colour = "#CC7390",
fill = "#CC7390", alpha = 0.5, na.rm = T) +
labs(x = "Grupo de Edad", y = "Casos",
title = "¿Qué edad tienen los infectados de SARS-CoV-2 en México?") +
theme_light() +
theme(text = element_text(family = "Quicksand Medium"),
title = element_text(family = "Keep Calm Med"))
```
#### Evolución de número de casos en cinco países del mundo
```{r message=FALSE, warning=FALSE}
# Tabla de nuevos casos y muertes
covidWWSituation() %>%
# Seleccionar países
filter(pais_territorio %in% c("Mexico", "Spain",
"Italy", "Brazil",
"United_States_of_America")) %>%
# Covertrr fechas en Date y cambiar guiones bajos en espacios
mutate(fecha_corte = as.Date(fecha_corte),
pais_territorio = gsub("_", " ", pais_territorio, fixed = T)) %>%
# Ordenar y agrupar
arrange(pais_territorio, fecha_corte) %>%
group_by(pais_territorio) %>%
# Contar casos acumulados
mutate(casos_acumulados = cumsum(casos_nuevos)) %>%
# Eliminar observaciones vacías hasta encontrar el primer caso
# Mantener filas a partir de la primer fila donde casos_nuevos != 0
filter(row_number() >= min(row_number()[casos_acumulados > 100])) %>%
# Días desde el primer caso y suma acumulada de casos
mutate(dias_transcurridos = fecha_corte - fecha_corte[1L]) %>%
# ggplot!
ggplot(aes(x = dias_transcurridos, y = casos_acumulados, colour = pais_territorio)) +
# Líneas
geom_line(size = 1.2, alpha = 0.7) +
# Escalas
scale_y_continuous(trans = "log2") +
# Títulos
labs(y = "log(Casos acumulados)", x = "Días transcurridos desde el caso N° 100",
title = "¿Qué tan rápido se contagia el SARS-CoV-2?",
subtitle = "Casos acumulados en cinco países desde que se confirmó el caso N° 100",
colour = "País",
caption = "Datos del Centro Europeo para la Prevención y Control de Enfermedades") +
# Tema <3
theme_light() +
theme(text = element_text(family = "Quicksand Medium"),
title = element_text(family = "Keep Calm Med"))
```
## Fuentes de datos :books:
Por favor, si usas este paquete en publicaciones, cita el paquete y las fuentes de datos.
Los datos de casos sospechosos y confirmados en México son publicados por la Secretaría de Salud federal del gobierno mexicano:
* Dirección General de Epidemiología, "Coronavirus (COVID-19): Comunicado técnico diario", https://www.gob.mx/salud/documentos/coronavirus-covid-19-comunicado-tecnico-diario-238449, consultado el 25 de marzo de 2020.
Las versiones _plain text_ de los reportes de la Secretaría de Salud fueron publicadas originalmente en:
* Redacción, "Datos abiertos sobre casos de Coronavirus COVID-19 en México", en _Serendipia: Periodismo de datos_, https://serendipia.digital/2020/03/datos-abiertos-sobre-casos-de-coronavirus-covid-19-en-mexico/, consultado el 18 de marzo de 2020.
* Katia Guzmán Martínez, "covid19_mex: Publicación de datos oficiales (Secretaría de Salud) en formato amigable", repositorio en _GitHub_, https://github.com/guzmart/covid19_mex, consultado el 18 de marzo de 2020.
Los datos del reporte situacional en el resto del mundo son publicados por dos fuentes: el Centro Europeo para la Prevención y Control de Enfermedades (ECDC) y el Johns Hopkins University Center for Systems Science and Engineering.
* European Centre for Disease Prevention and Control, "Download today’s data on the geographic distribution of COVID-19 cases worldwide", https://www.ecdc.europa.eu/en/publications-data/download-todays-data-geographic-distribution-covid-19-cases-worldwide, consultado el 25 de marzo de 2020.
* Johns Hopkins University Center for Systems Science and Engineering, "COVID-19: Novel Coronavirus (COVID-19) Cases", repositorio en _GitHub_, https://github.com/CSSEGISandData/COVID-19, consultado el 25 de marzo de 2020.
## Build & Test Info :construction_worker:
__Probado en:__
```{r echo=FALSE}
knitr::kable(as.data.frame(R.Version()))
```
## Changelog :clipboard:
### 0.1.0 - 18/03/2020
#### Added
* `getData` and `ParseSerendipia` functions.
### 0.2.0 - 19/03/2020
#### Fixed
* Error when using `date` type object in `getData` (as `date` parameter).
* DESCRIPTION and NAMESPACE file now has proper package dependencies (under CRAN rules).
* DESCRIPTION file now has better package information (under CRAN rules). ALthough, some warnings and notes generated by `R CMD Check` remain unattended.
* Typos in documentation.
#### Changed
* README file. Better package description and functionality.
* `ParseSerendipia` function renamed to `GetFromSerendipia`.
* `getData`
#### Added
* LICENSE file.
* `GetFromGuzmart` function. This functions downloads data from Katia Guzman's GitHub repo.
* `"guzmart"` is now a valid `source` parameter value in `getData` function. Downloads data from Katia Guzman's GitHub repo.
### 0.2.1 - 19/03/2020
#### Fixed
* Fixed some minor typos in DESCRIPTION.
* Changelog now included in README. TODO section moved to UNRELEASED in Changelog.
* `onAttach` message fixed. It was not clear if the 'last update' info was about package or data.
* Fixed out of date documentation of `getData` function.
* Fixed some typos in function comments.
### 0.3.0 - 23/03/2020
#### Added
* `covidSuspectsMx` and `covidConfirmedMx` functions. These are "super easy/fast to use" wrappers of `getData`.
* Parameter `neat` in `getData`, `GetFromSerendipia`, and `GetFromGuzmart` functions. This parameter allows user to decide if some data cleaning is performed on the returned `tibbles` by `GetFromSerendipia` and `GetFromGuzmart`. Specially, proper date parsing and state name capitalizing.
#### Fixed
* Typos in README and functions comments.
### 0.3.1 - 24/03/2020
#### Fixed
* Serendipia updated data page, this broke scrapping routine. Changed CSS targets in `getFromSerendipia`.
* In `getData`, `GetFromSerendipia`, and `GetFromGuzmart` `neat` parameter is now set to `FALSE` as default. This prevents errors when unexpected column names mess with clean routine.
* Proper versioning in DESCRIPTION.
### 0.5.0
#### Fixed
* Typos in documentation.
#### Deprecated
* `GetFromGuzmart` is now deprecated. Repo source stopped daily updates. **Will remove in future versions.** `GetFromSerendipia` and `getFromSSA` are the suggested replacements. Deprecation warnings placed in documentation (`getData`, `GetFromGuzmart`) and method routine (`GetFromGuzmart`).
#### Changed
* `GetFromSSA` is the default method for `covidConfirmedMx` wrapper (`GetFromGuzmart` was the default method).
#### Added
* Official Mexico's Ministry of Health (Secretaría de Salud) Open Data node is now available. As any other data source, user can get data using `getData` wrapper or `GetFromSSA`.
* Function tests
### Unrelelased
* Remove `GetFromGuzmart`, and `Guzmart` (`source` parameter in `getData`).
## Licencia
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Licencia Creative Commons" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br />Esta obra está bajo una <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional</a>