Last active
May 8, 2020 23:31
-
-
Save thoughtfulbloke/35720e9436a1257d85f8876f3820f933 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
library(dplyr) | |
library(lubridate) | |
library(ggplot2) | |
library(ggthemes) | |
# European Centre for Disease Control and Prevention | |
EUcdc <- read.csv("https://opendata.ecdc.europa.eu/covid19/casedistribution/csv", | |
stringsAsFactors = FALSE, fileEncoding = "UTF-8-BOM") | |
highlight_countries <- c("New_Zealand", "United_Kingdom", "United_States_of_America", | |
"Taiwan", "Sweden", "Vietnam", "Australia") | |
highlight <- EUcdc %>% | |
mutate(ReportDate = dmy(dateRep, tz="UTC")) %>% | |
filter(ReportDate > dmy("30-1-2020", tz="UTC"), | |
countriesAndTerritories %in% highlight_countries) %>% | |
arrange(countriesAndTerritories, ReportDate) %>% | |
group_by(countriesAndTerritories) %>% | |
mutate(total_cases = cumsum(cases), | |
total_deaths = cumsum(deaths), | |
days = as.integer(difftime(ReportDate, dmy("30-1-2020", tz="UTC"), units="day"))) %>% | |
ungroup() %>% | |
filter(total_cases > 29) %>% | |
arrange(countriesAndTerritories, ReportDate) %>% | |
group_by(countriesAndTerritories) %>% | |
mutate(reports=n()) %>% | |
ungroup() %>% | |
filter(reports > 10) %>% | |
group_by(countriesAndTerritories) %>% | |
summarise(days_to_20cases = days[1], | |
max_cases = max(cases), | |
current_cases = (cases[n()] + cases[n()-1] + cases[n()-2] + cases[n()-3] + | |
cases[n()-4] + cases[n()-5] + cases[n()-6])/7, | |
current_7daysmooth_vs_max_cases = current_cases/ max_cases) | |
EUcdc %>% | |
mutate(ReportDate = dmy(dateRep, tz="UTC")) %>% | |
filter(ReportDate > dmy("30-1-2020", tz="UTC")) %>% | |
arrange(countriesAndTerritories, ReportDate) %>% | |
group_by(countriesAndTerritories) %>% | |
mutate(total_cases = cumsum(cases), | |
total_deaths = cumsum(deaths), | |
days = as.integer(difftime(ReportDate, dmy("30-1-2020", tz="UTC"), units="day"))) %>% | |
ungroup() %>% | |
filter(total_cases > 29) %>% | |
arrange(countriesAndTerritories, ReportDate) %>% | |
group_by(countriesAndTerritories) %>% | |
mutate(reports=n()) %>% | |
ungroup() %>% | |
filter(reports > 10) %>% | |
group_by(countriesAndTerritories) %>% | |
summarise(days_to_20cases = days[1], | |
max_cases = max(cases), | |
current_cases = (cases[n()] + cases[n()-1] + cases[n()-2] + cases[n()-3] + | |
cases[n()-4] + cases[n()-5] + cases[n()-6])/7, | |
current_7daysmooth_vs_max_cases = current_cases/ max_cases) %>% | |
ggplot(aes(x=days_to_20cases, y=current_7daysmooth_vs_max_cases)) + | |
geom_point(colour="#AAAAAA",alpha=0.5) + theme_minimal() + | |
geom_point(data=highlight, aes(x=days_to_20cases, y=current_7daysmooth_vs_max_cases, | |
colour=countriesAndTerritories)) + | |
scale_colour_colorblind() + xlab("days to 30 cases starting from Jan 30") + | |
ylab("current daily cases (smoothed 7 day lag) as proportion of max daily cases") | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment