Coronavirus Dataset
Coronavirus Dataset is provided by RamiKrispin, updated till 31 July 2020
library(coronavirus)
#update_dataset()
#covid19_df <- refresh_coronavirus_jhu()
#head(covid19_df)
#glimpse(covid19_df)
data("coronavirus")
head(coronavirus)
## date province country lat long type cases
## 1 2020-01-22 Afghanistan 33.93911 67.70995 confirmed 0
## 2 2020-01-23 Afghanistan 33.93911 67.70995 confirmed 0
## 3 2020-01-24 Afghanistan 33.93911 67.70995 confirmed 0
## 4 2020-01-25 Afghanistan 33.93911 67.70995 confirmed 0
## 5 2020-01-26 Afghanistan 33.93911 67.70995 confirmed 0
## 6 2020-01-27 Afghanistan 33.93911 67.70995 confirmed 0
Top 20 country
Summary of the total confrimed cases by country (top 20):
library(dplyr)
summary_df <- coronavirus %>%
filter(type == "confirmed") %>%
group_by(country) %>%
summarise(total_cases = sum(cases)) %>%
arrange(-total_cases)
Update new cases
Summary of new cases during the past 24 hours by country and type (as of 2020-07-31):
library(tidyr)
coronavirus %>%
filter(date == max(date)) %>%
select(country, type, cases) %>%
group_by(country, type) %>%
summarise(total_cases = sum(cases)) %>%
pivot_wider(names_from = type,
values_from = total_cases) %>%
arrange(-confirmed)
## # A tibble: 188 x 4
## # Groups: country [188]
## country confirmed death recovered
## <chr> <int> <int> <int>
## 1 US 67023 1259 24005
## 2 India 61242 793 39026
## 3 Brazil 52383 1212 52047
## 4 South Africa 11014 193 16570
## 5 Colombia 9488 295 5692
## 6 Mexico 8458 688 7015
## 7 Peru 6809 205 0
## 8 Argentina 5929 102 3184
## 9 Russia 5468 161 8735
## 10 Iraq 3346 70 1888
## # ... with 178 more rows
Total cases
Plotting the total cases by type worldwide:
library(plotly)
coronavirus %>%
group_by(type, date) %>%
summarise(total_cases = sum(cases)) %>%
pivot_wider(names_from = type, values_from = total_cases) %>%
arrange(date) %>%
mutate(active = confirmed - death - recovered) %>%
mutate(active_total = cumsum(active),
recovered_total = cumsum(recovered),
death_total = cumsum(death)) %>%
plot_ly(x = ~ date,
y = ~ active_total,
name = 'Active',
fillcolor = '#1f77b4',
type = 'scatter',
mode = 'none',
stackgroup = 'one') %>%
add_trace(y = ~ death_total,
name = "Death",
fillcolor = '#E41317') %>%
add_trace(y = ~recovered_total,
name = 'Recovered',
fillcolor = 'forestgreen') %>%
layout(title = "Distribution of Covid19 Cases Worldwide",
legend = list(x = 0.1, y = 0.9),
yaxis = list(title = "Number of Cases"),
xaxis = list(title = "Source: Johns Hopkins University Center for Systems Science and Engineering"))
## The treemap {.tabset}
Plot the confirmed cases distribution by country with treemap plot:
conf_df <- coronavirus %>%
filter(type == "confirmed") %>%
group_by(country) %>%
summarise(total_cases = sum(cases)) %>%
arrange(-total_cases) %>%
mutate(parents = "Confirmed") %>%
ungroup()
plot_ly(data = conf_df,
type= "treemap",
values = ~total_cases,
labels= ~ country,
parents= ~parents,
domain = list(column=0),
name = "Confirmed",
textinfo="label+value+percent parent")
LS0tDQp0aXRsZTogIkdlbmVyYWwgVmlldyBhYm91dCB0aGUgQ09WSUQgcGFuZGVtaWMgdGlsbCAzMSBKdWx5IDIwMjAiDQphdXRob3I6ICJUcmFuIFF1YW5nIFF1eSAtIElDVFUiDQpzdWJ0aXRsZTogUiBmb3IgRGF0YSBWaXN1YWxpemF0aW9uDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgaGlnaGxpZ2h0OiBweWdtZW50cw0KICAgIHRoZW1lOiBmbGF0bHkNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDogeWVzDQogIHdvcmRfZG9jdW1lbnQ6DQogICAgdG9jOiB5ZXMNCiAgcGRmX2RvY3VtZW50Og0KICAgIHRvYzogeWVzDQotLS0NCg0KYGBge3Igc2V0dXAsaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgd2FybmluZyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UpDQpgYGANCg0KIyMgQ29yb25hdmlydXMgRGF0YXNldCB7LnRhYnNldH0NCg0KQ29yb25hdmlydXMgRGF0YXNldCBpcyBwcm92aWRlZCBieSBSYW1pS3Jpc3BpbiwgdXBkYXRlZCB0aWxsIDMxIEp1bHkgMjAyMA0KDQoNCmBgYHtyfQ0KbGlicmFyeShjb3JvbmF2aXJ1cykNCiN1cGRhdGVfZGF0YXNldCgpDQojY292aWQxOV9kZiA8LSByZWZyZXNoX2Nvcm9uYXZpcnVzX2podSgpDQojaGVhZChjb3ZpZDE5X2RmKQ0KI2dsaW1wc2UoY292aWQxOV9kZikNCmRhdGEoImNvcm9uYXZpcnVzIikNCmhlYWQoY29yb25hdmlydXMpDQoNCmBgYA0KIyMgVG9wIDIwIGNvdW50cnkgey50YWJzZXR9DQoNClN1bW1hcnkgb2YgdGhlIHRvdGFsIGNvbmZyaW1lZCBjYXNlcyBieSBjb3VudHJ5ICh0b3AgMjApOg0KDQoNCmBgYHtyfQ0KbGlicmFyeShkcGx5cikNCnN1bW1hcnlfZGYgPC0gY29yb25hdmlydXMgJT4lIA0KICBmaWx0ZXIodHlwZSA9PSAiY29uZmlybWVkIikgJT4lDQogIGdyb3VwX2J5KGNvdW50cnkpICU+JQ0KICBzdW1tYXJpc2UodG90YWxfY2FzZXMgPSBzdW0oY2FzZXMpKSAlPiUNCiAgYXJyYW5nZSgtdG90YWxfY2FzZXMpDQoNCmBgYA0KDQojIyBVcGRhdGUgbmV3IGNhc2VzIHsudGFic2V0fQ0KDQpTdW1tYXJ5IG9mIG5ldyBjYXNlcyBkdXJpbmcgdGhlIHBhc3QgMjQgaG91cnMgYnkgY291bnRyeSBhbmQgdHlwZSAoYXMgb2YgMjAyMC0wNy0zMSk6DQoNCg0KYGBge3J9DQpsaWJyYXJ5KHRpZHlyKQ0KDQpjb3JvbmF2aXJ1cyAlPiUgDQogIGZpbHRlcihkYXRlID09IG1heChkYXRlKSkgJT4lDQogIHNlbGVjdChjb3VudHJ5LCB0eXBlLCBjYXNlcykgJT4lDQogIGdyb3VwX2J5KGNvdW50cnksIHR5cGUpICU+JQ0KICBzdW1tYXJpc2UodG90YWxfY2FzZXMgPSBzdW0oY2FzZXMpKSAlPiUNCiAgcGl2b3Rfd2lkZXIobmFtZXNfZnJvbSA9IHR5cGUsDQogICAgICAgICAgICAgIHZhbHVlc19mcm9tID0gdG90YWxfY2FzZXMpICU+JQ0KICBhcnJhbmdlKC1jb25maXJtZWQpDQoNCmBgYA0KDQojIyBUb3RhbCBjYXNlcyB7LnRhYnNldH0NCg0KUGxvdHRpbmcgdGhlIHRvdGFsIGNhc2VzIGJ5IHR5cGUgd29ybGR3aWRlOg0KDQpgYGB7cn0NCmxpYnJhcnkocGxvdGx5KQ0KDQpjb3JvbmF2aXJ1cyAlPiUgDQogIGdyb3VwX2J5KHR5cGUsIGRhdGUpICU+JQ0KICBzdW1tYXJpc2UodG90YWxfY2FzZXMgPSBzdW0oY2FzZXMpKSAlPiUNCiAgcGl2b3Rfd2lkZXIobmFtZXNfZnJvbSA9IHR5cGUsIHZhbHVlc19mcm9tID0gdG90YWxfY2FzZXMpICU+JQ0KICBhcnJhbmdlKGRhdGUpICU+JQ0KICBtdXRhdGUoYWN0aXZlID0gY29uZmlybWVkIC0gZGVhdGggLSByZWNvdmVyZWQpICU+JQ0KICBtdXRhdGUoYWN0aXZlX3RvdGFsID0gY3Vtc3VtKGFjdGl2ZSksDQogICAgICAgICAgICAgICAgcmVjb3ZlcmVkX3RvdGFsID0gY3Vtc3VtKHJlY292ZXJlZCksDQogICAgICAgICAgICAgICAgZGVhdGhfdG90YWwgPSBjdW1zdW0oZGVhdGgpKSAlPiUNCiAgcGxvdF9seSh4ID0gfiBkYXRlLA0KICAgICAgICAgICAgICAgICAgeSA9IH4gYWN0aXZlX3RvdGFsLA0KICAgICAgICAgICAgICAgICAgbmFtZSA9ICdBY3RpdmUnLCANCiAgICAgICAgICAgICAgICAgIGZpbGxjb2xvciA9ICcjMWY3N2I0JywNCiAgICAgICAgICAgICAgICAgIHR5cGUgPSAnc2NhdHRlcicsDQogICAgICAgICAgICAgICAgICBtb2RlID0gJ25vbmUnLCANCiAgICAgICAgICAgICAgICAgIHN0YWNrZ3JvdXAgPSAnb25lJykgJT4lDQogIGFkZF90cmFjZSh5ID0gfiBkZWF0aF90b3RhbCwgDQogICAgICAgICAgICAgbmFtZSA9ICJEZWF0aCIsDQogICAgICAgICAgICAgZmlsbGNvbG9yID0gJyNFNDEzMTcnKSAlPiUNCiAgYWRkX3RyYWNlKHkgPSB+cmVjb3ZlcmVkX3RvdGFsLCANCiAgICAgICAgICAgIG5hbWUgPSAnUmVjb3ZlcmVkJywgDQogICAgICAgICAgICBmaWxsY29sb3IgPSAnZm9yZXN0Z3JlZW4nKSAlPiUNCiAgbGF5b3V0KHRpdGxlID0gIkRpc3RyaWJ1dGlvbiBvZiBDb3ZpZDE5IENhc2VzIFdvcmxkd2lkZSIsDQogICAgICAgICBsZWdlbmQgPSBsaXN0KHggPSAwLjEsIHkgPSAwLjkpLA0KICAgICAgICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIk51bWJlciBvZiBDYXNlcyIpLA0KICAgICAgICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gIlNvdXJjZTogSm9obnMgSG9wa2lucyBVbml2ZXJzaXR5IENlbnRlciBmb3IgU3lzdGVtcyBTY2llbmNlIGFuZCBFbmdpbmVlcmluZyIpKQ0KDQpgYGANCiMjIFRoZSB0cmVlbWFwIHsudGFic2V0fQ0KDQpQbG90IHRoZSBjb25maXJtZWQgY2FzZXMgZGlzdHJpYnV0aW9uIGJ5IGNvdW50cnkgd2l0aCB0cmVlbWFwIHBsb3Q6DQoNCg0KYGBge3J9DQpjb25mX2RmIDwtIGNvcm9uYXZpcnVzICU+JSANCiAgZmlsdGVyKHR5cGUgPT0gImNvbmZpcm1lZCIpICU+JQ0KICBncm91cF9ieShjb3VudHJ5KSAlPiUNCiAgc3VtbWFyaXNlKHRvdGFsX2Nhc2VzID0gc3VtKGNhc2VzKSkgJT4lDQogIGFycmFuZ2UoLXRvdGFsX2Nhc2VzKSAlPiUNCiAgbXV0YXRlKHBhcmVudHMgPSAiQ29uZmlybWVkIikgJT4lDQogIHVuZ3JvdXAoKSANCiAgDQogIHBsb3RfbHkoZGF0YSA9IGNvbmZfZGYsDQogICAgICAgICAgdHlwZT0gInRyZWVtYXAiLA0KICAgICAgICAgIHZhbHVlcyA9IH50b3RhbF9jYXNlcywNCiAgICAgICAgICBsYWJlbHM9IH4gY291bnRyeSwNCiAgICAgICAgICBwYXJlbnRzPSAgfnBhcmVudHMsDQogICAgICAgICAgZG9tYWluID0gbGlzdChjb2x1bW49MCksDQogICAgICAgICAgbmFtZSA9ICJDb25maXJtZWQiLA0KICAgICAgICAgIHRleHRpbmZvPSJsYWJlbCt2YWx1ZStwZXJjZW50IHBhcmVudCIpDQoNCmBgYA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQo=