Gráfico reproducible de FINANCIAL TIMES sobre el COVID-19
Esta es mi primera publicación para realizar gráficos de series temporales del número de Casos confirmados con la base de datos otorgado por European Centre for Disease Prevention and Control (ECDC) en R.
Los costos humanitarios del brote de coronavirus continúan aumentando, con más de 679.000 personas infectadas en todo el mundo. El número de personas que se ha confirmado que han muerto como resultado del virus ha superado ya las 31.700.
La proliferación del virus ha sido declarada como pandemia por la Organización Mundial de la Salud, lo que significa que se está extendiendo rápidamente en diferentes partes del mundo. Más de 180 países han confirmado casos hasta ahora. El epicentro del coronavirus es ahora Europa, con el mayor número de casos confirmados en Italia, y el número de muertes crece más rápidamente en Italia, España, el Reino Unido y los EE.UU. que en China en la misma etapa del brote.
(Actualización de la situación 28 de marzo de 2020, conjunto de datos recogidos 6:00-10:00 CET)
La Replicación
Esta réplica dependerá de unos pocos paquetes. tidyverse
está al frente de mi flujo de trabajo. Y los paquetes httr
y readxl
cargará la base de datos. Llamaré a algunas funciones de forcats
para procesar la información de los gráficos.
library(tidyverse)
library(httr)
library(readxl)
library(kableExtra)
# Los datos se cargarán actualizados
url <- paste("https://www.ecdc.europa.eu/sites/default/files/documents/COVID-19-geographic-disbtribution-worldwide-",
format(Sys.time(),
"%Y-%m-%d"),
".xlsx",
sep = "")
GET(url,
authenticate(":", ":", type="ntlm"),
write_disk(tf <- tempfile(fileext = ".xlsx")))
data <- read_excel(tf)
dateRep | day | month | year | cases | deaths | countriesAndTerritories | geoId | countryterritoryCode | popData2018 |
---|---|---|---|---|---|---|---|---|---|
2020-03-27 | 27 | 3 | 2020 | 0 | 0 | Afghanistan | AF | AFG | 37172386 |
2020-03-26 | 26 | 3 | 2020 | 33 | 0 | Afghanistan | AF | AFG | 37172386 |
2020-03-25 | 25 | 3 | 2020 | 2 | 0 | Afghanistan | AF | AFG | 37172386 |
2020-03-24 | 24 | 3 | 2020 | 6 | 1 | Afghanistan | AF | AFG | 37172386 |
2020-03-23 | 23 | 3 | 2020 | 10 | 0 | Afghanistan | AF | AFG | 37172386 |
Los Datos
El marco de datos se almacena como uniondensity
. Tiene 7126 filas con 10 columnas. La primera columna, dateRep
la fecha intuitivamente. De la columna 2 a la 4 representará day
, month
y year
respectivamente. Las columnas que nos vamos a enfocar para realizar el gráfico será el número de casos (cases
) que no representará la suma acumulada hasta la actualidad (27 de marzo de 2020). La columna 7 será el nombre completo de cada país countryterritoryCode
y el identificador correspondiente a cada país como geoId
.
Primeramente se realizará un data frame sobre aquellos países que hayan tenido un número mayor o igual a 257 (filter(n >= 257)
).
topdat = data %>%
#agrupar por cada identificador de país
group_by(geoId) %>%
#generar una variable n que registrará en número maximo de casos en un día para todos los países
summarize(n = max(cases)) %>%
#un filtro para casos mayores a 257
filter(n >= 257) %>% # filter(geoId == "EC" | geoId == "CN") %>%
#ordenar en forma descendente
arrange(desc(n))
Ahora viene para mi la parte más intereante… Para poder crear cada panel en R la
<!DOCTYPE html>
And then you keep writing your exciting blog post.