-
Notifications
You must be signed in to change notification settings - Fork 1
/
data_updater.R
71 lines (63 loc) · 3.26 KB
/
data_updater.R
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
# load libraries
library(dplyr)
library(RJSONIO)
# create data directory, if it doesn't already exist
dir.create("data", showWarnings = FALSE)
# download most recent data from GitHub and unzip into temporary folder
temp <- tempfile()
tempd <- tempdir()
download.file("https://github.com/ccodwg/Covid19Canada/archive/master.zip", temp, mode = "wb")
unzip(temp, exdir = tempd)
# copy into local data directories
## copy data
if (dir.exists(paste(tempd, "Covid19Canada-master", sep = "/"))) {
for (f in list.files(paste(tempd, "Covid19Canada-master", sep = "/"), recursive = TRUE, full.names = TRUE)[basename(list.files(paste(tempd, "Covid19Canada-master", sep = "/"), recursive = TRUE)) %in% c(
"update_time.txt", "data_notes.txt",
"cases_timeseries_prov.csv", "mortality_timeseries_prov.csv", "recovered_timeseries_prov.csv", "testing_timeseries_prov.csv", "active_timeseries_prov.csv",
"cases_timeseries_hr.csv", "mortality_timeseries_hr.csv",
"cases_timeseries_canada.csv", "mortality_timeseries_canada.csv", "recovered_timeseries_canada.csv", "testing_timeseries_canada.csv", "active_timeseries_canada.csv",
"vaccine_administration_timeseries_prov.csv", "vaccine_administration_timeseries_canada.csv",
"vaccine_distribution_timeseries_prov.csv", "vaccine_distribution_timeseries_canada.csv",
"vaccine_completion_timeseries_prov.csv", "vaccine_completion_timeseries_canada.csv",
"vaccine_additionaldoses_timeseries_prov.csv", "vaccine_additionaldoses_timeseries_canada.csv",
"sk_new_cases_timeseries_hr.csv","sk_new_mortality_timeseries_hr.csv"
)]) {
file_destination <- paste0("data/", basename(f))
message("Copying: ", file_destination)
file.copy(f, file_destination, overwrite = TRUE)
}
}
## copy other files
if (dir.exists(paste(tempd, "Covid19Canada-master", sep = "/"))) {
for (f in list.files(paste(tempd, "Covid19Canada-master", sep = "/"), recursive = TRUE, full.names = TRUE)[basename(list.files(paste(tempd, "Covid19Canada-master", sep = "/"), recursive = TRUE)) %in% c(
"prov_map.csv", "hr_map.csv","hr_map_sk_new.csv"
)]) {
file_destination <- paste0("data/", basename(f))
message("Copying: ", file_destination)
file.copy(f, file_destination, overwrite = TRUE)
}
}
# download hospitalization data
hosp <- fromJSON("https://api.covid19tracker.ca/summary/split")$data %>%
lapply(function(x) {
x[sapply(x, is.null)] <- NA
unlist(x)
}) %>%
{as.data.frame(t(do.call("cbind", .)), stringsAsFactors = FALSE)} %>%
rename(
prov_short = province,
hosp_cases = total_hospitalizations,
hosp_cases_change = change_hospitalizations) %>%
inner_join(
data.frame("prov_short" = c("NL", "PE", "NS", "NB", "QC", "ON", "MB", "SK", "AB", "BC", "YT", "NT", "NU"),
"province" = c("NL", "PEI", "Nova Scotia", "New Brunswick", "Quebec", "Ontario", "Manitoba",
"Saskatchewan", "Alberta", "BC", "Yukon", "NWT", "Nunavut"),
stringsAsFactors = FALSE),
by = "prov_short"
) %>%
select(province, hosp_cases, hosp_cases_change)
# write hospitalization data
write.csv(hosp, "data/hosp.csv", row.names = FALSE)
# delete temporary files
unlink(temp) # delete GitHub download
unlink(paste(tempd, "Covid19Canada-master", sep = "/"), recursive = TRUE) # delete unzipped files