Corona Virus Prevalence
R codes for interactive map:
# Load data (source: https://github.com/CSSEGISandData/COVID-19):
library(tidyverse)
library(lubridate)
library(countrycode)
link1 <- "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Recovered.csv"
link2 <- "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv"
link1 %>%
read_csv() %>%
rename(Province = `Province/State`, Country = `Country/Region`) %>%
gather(Date, Recovered, -Province, -Country, -Lat, -Long) %>%
mutate(Date = mdy(Date)) -> df_recovered
link2 %>%
read_csv() %>%
rename(Province = `Province/State`, Country = `Country/Region`) %>%
gather(Date, Confirmed, -Province, -Country, -Lat, -Long) %>%
mutate(Date = mdy(Date)) -> df_confirmed
end_date <- ymd("2020-03-05")
df_recovered %>%
filter(Date == end_date) %>%
group_by(Country) %>%
mutate(TotalRec = sum(Recovered)) %>%
ungroup() %>%
filter(!duplicated(Country)) %>%
select(Country, TotalRec) -> recovered_0503
df_confirmed %>%
filter(Date == end_date) %>%
group_by(Country) %>%
mutate(TotalCon = sum(Confirmed)) %>%
ungroup() %>%
filter(!duplicated(Country)) %>%
select(Country, TotalCon) -> confirmed_0503
full_join(confirmed_0503, recovered_0503, by = 'Country') %>%
mutate(N_cases = TotalCon - TotalRec) -> df_final
df_final %>%
mutate(Country = case_when(Country %in% c("Mainland China", "Macau", "Hong Kong") ~ "China",
Country == "US" ~ "United States",
Country == "UK" ~ "United Kingdom",
TRUE ~ Country)) %>%
group_by(Country) %>%
summarise(N_cases = sum(N_cases)) %>%
ungroup() %>%
mutate(iso3 = countrycode(Country, origin = "country.name", destination = "iso3c")) -> df_final
library(highcharter)
highchart(type = "map") %>%
hc_add_series_map(map = worldgeojson, df = df_final, value = "N_cases", joinBy = "iso3") %>%
hc_colorAxis(stops = color_stops()) %>%
hc_title(text = "Corona Virus Prevalence by Country as of 05-03-2020",
style = list(fontSize = "24px")) %>%
hc_credits(enabled = TRUE, style = list(fontSize = "12px"),
text = "Source: Johns Hopkins University Center for Systems Science and Engineering") %>%
hc_tooltip(useHTML = TRUE, headerFormat = "",
pointFormat = "Country: {point.Country}, Number of Corona Cases: {point.N_cases}") %>%
hc_add_theme(hc_theme_flatdark())
LS0tDQp0aXRsZTogJ0Nvcm9uYSBWaXJ1cyBQcmV2YWxlbmNlIGJ5IENvdW50cnknDQphdXRob3I6ICdBdXRob3I6IE5ndXllbiBDaGkgRHVuZycNCnN1YnRpdGxlOiAiRGFpbHkgR3JhcGggU2VyaWVzIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50OiANCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgaGlnaGxpZ2h0OiB6ZW5idXJuDQogICAgIyBudW1iZXJfc2VjdGlvbnM6IHllcw0KICAgIHRoZW1lOiAiZmxhdGx5Ig0KICAgIHRvYzogVFJVRQ0KICAgIHRvY19mbG9hdDogVFJVRQ0KLS0tDQoNCmBgYHtyIHNldHVwLGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFLCBmaWcud2lkdGggPSAxMCwgZmlnLmhlaWdodCA9IDYpDQpgYGANCg0KDQoNCiMgQ29yb25hIFZpcnVzIFByZXZhbGVuY2UgDQoNClIgY29kZXMgZm9yIGludGVyYWN0aXZlIG1hcDogDQoNCg0KYGBge3J9DQoNCiMgTG9hZCBkYXRhIChzb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9DU1NFR0lTYW5kRGF0YS9DT1ZJRC0xOSk6IA0KDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkobHVicmlkYXRlKQ0KbGlicmFyeShjb3VudHJ5Y29kZSkNCg0KbGluazEgPC0gImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DU1NFR0lTYW5kRGF0YS9DT1ZJRC0xOS9tYXN0ZXIvY3NzZV9jb3ZpZF8xOV9kYXRhL2Nzc2VfY292aWRfMTlfdGltZV9zZXJpZXMvdGltZV9zZXJpZXNfMTktY292aWQtUmVjb3ZlcmVkLmNzdiINCmxpbmsyIDwtICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ1NTRUdJU2FuZERhdGEvQ09WSUQtMTkvbWFzdGVyL2Nzc2VfY292aWRfMTlfZGF0YS9jc3NlX2NvdmlkXzE5X3RpbWVfc2VyaWVzL3RpbWVfc2VyaWVzXzE5LWNvdmlkLUNvbmZpcm1lZC5jc3YiDQoNCg0KbGluazEgJT4lIA0KICByZWFkX2NzdigpICU+JSANCiAgcmVuYW1lKFByb3ZpbmNlID0gYFByb3ZpbmNlL1N0YXRlYCwgQ291bnRyeSA9IGBDb3VudHJ5L1JlZ2lvbmApICU+JSANCiAgZ2F0aGVyKERhdGUsIFJlY292ZXJlZCwgLVByb3ZpbmNlLCAtQ291bnRyeSwgLUxhdCwgLUxvbmcpICU+JSANCiAgbXV0YXRlKERhdGUgPSBtZHkoRGF0ZSkpIC0+IGRmX3JlY292ZXJlZA0KDQoNCmxpbmsyICU+JSANCiAgcmVhZF9jc3YoKSAlPiUgDQogIHJlbmFtZShQcm92aW5jZSA9IGBQcm92aW5jZS9TdGF0ZWAsIENvdW50cnkgPSBgQ291bnRyeS9SZWdpb25gKSAlPiUgDQogIGdhdGhlcihEYXRlLCBDb25maXJtZWQsIC1Qcm92aW5jZSwgLUNvdW50cnksIC1MYXQsIC1Mb25nKSAlPiUgDQogIG11dGF0ZShEYXRlID0gbWR5KERhdGUpKSAtPiBkZl9jb25maXJtZWQNCg0KDQplbmRfZGF0ZSA8LSB5bWQoIjIwMjAtMDMtMDUiKQ0KDQoNCmRmX3JlY292ZXJlZCAlPiUgDQogIGZpbHRlcihEYXRlID09IGVuZF9kYXRlKSAlPiUgDQogIGdyb3VwX2J5KENvdW50cnkpICU+JSANCiAgbXV0YXRlKFRvdGFsUmVjID0gc3VtKFJlY292ZXJlZCkpICU+JSANCiAgdW5ncm91cCgpICU+JSANCiAgZmlsdGVyKCFkdXBsaWNhdGVkKENvdW50cnkpKSAlPiUgDQogIHNlbGVjdChDb3VudHJ5LCBUb3RhbFJlYykgLT4gcmVjb3ZlcmVkXzA1MDMNCg0KDQoNCmRmX2NvbmZpcm1lZCAlPiUgDQogIGZpbHRlcihEYXRlID09IGVuZF9kYXRlKSAlPiUgDQogIGdyb3VwX2J5KENvdW50cnkpICU+JSANCiAgbXV0YXRlKFRvdGFsQ29uID0gc3VtKENvbmZpcm1lZCkpICU+JSANCiAgdW5ncm91cCgpICU+JSANCiAgZmlsdGVyKCFkdXBsaWNhdGVkKENvdW50cnkpKSAlPiUgDQogIHNlbGVjdChDb3VudHJ5LCBUb3RhbENvbikgLT4gY29uZmlybWVkXzA1MDMNCg0KDQpmdWxsX2pvaW4oY29uZmlybWVkXzA1MDMsIHJlY292ZXJlZF8wNTAzLCBieSA9ICdDb3VudHJ5JykgJT4lIA0KICBtdXRhdGUoTl9jYXNlcyA9IFRvdGFsQ29uIC0gVG90YWxSZWMpIC0+IGRmX2ZpbmFsDQoNCg0KDQpkZl9maW5hbCAlPiUgDQogIG11dGF0ZShDb3VudHJ5ID0gY2FzZV93aGVuKENvdW50cnkgJWluJSBjKCJNYWlubGFuZCBDaGluYSIsICJNYWNhdSIsICJIb25nIEtvbmciKSB+ICJDaGluYSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudHJ5ID09ICJVUyIgfiAiVW5pdGVkIFN0YXRlcyIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudHJ5ID09ICJVSyIgfiAiVW5pdGVkIEtpbmdkb20iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IENvdW50cnkpKSAlPiUgDQogIGdyb3VwX2J5KENvdW50cnkpICU+JSANCiAgc3VtbWFyaXNlKE5fY2FzZXMgPSBzdW0oTl9jYXNlcykpICU+JSANCiAgdW5ncm91cCgpICU+JSANCiAgbXV0YXRlKGlzbzMgPSBjb3VudHJ5Y29kZShDb3VudHJ5LCBvcmlnaW4gPSAiY291bnRyeS5uYW1lIiwgZGVzdGluYXRpb24gPSAiaXNvM2MiKSkgLT4gZGZfZmluYWwNCg0KDQoNCmxpYnJhcnkoaGlnaGNoYXJ0ZXIpDQoNCmhpZ2hjaGFydCh0eXBlID0gIm1hcCIpICU+JSANCiAgaGNfYWRkX3Nlcmllc19tYXAobWFwID0gd29ybGRnZW9qc29uLCBkZiA9IGRmX2ZpbmFsLCB2YWx1ZSA9ICJOX2Nhc2VzIiwgam9pbkJ5ID0gImlzbzMiKSAlPiUgDQogIGhjX2NvbG9yQXhpcyhzdG9wcyA9IGNvbG9yX3N0b3BzKCkpICU+JSANCiAgaGNfdGl0bGUodGV4dCA9ICJDb3JvbmEgVmlydXMgUHJldmFsZW5jZSBieSBDb3VudHJ5IGFzIG9mIDA1LTAzLTIwMjAiLCANCiAgICAgICAgICAgc3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjI0cHgiKSkgJT4lIA0KICBoY19jcmVkaXRzKGVuYWJsZWQgPSBUUlVFLCBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTJweCIpLCAgDQogICAgICAgICAgICAgdGV4dCA9ICJTb3VyY2U6IEpvaG5zIEhvcGtpbnMgVW5pdmVyc2l0eSBDZW50ZXIgZm9yIFN5c3RlbXMgU2NpZW5jZSBhbmQgRW5naW5lZXJpbmciKSAlPiUgDQogIGhjX3Rvb2x0aXAodXNlSFRNTCA9IFRSVUUsIGhlYWRlckZvcm1hdCA9ICIiLA0KICAgICAgICAgICAgIHBvaW50Rm9ybWF0ID0gIkNvdW50cnk6IHtwb2ludC5Db3VudHJ5fSwgTnVtYmVyIG9mIENvcm9uYSBDYXNlczoge3BvaW50Lk5fY2FzZXN9IikgJT4lIA0KICBoY19hZGRfdGhlbWUoaGNfdGhlbWVfZmxhdGRhcmsoKSkNCg0KYGBgDQoNCg==