-
Notifications
You must be signed in to change notification settings - Fork 92
/
ds_github.italia.covid19opendatavaccini.R
95 lines (84 loc) · 2.45 KB
/
ds_github.italia.covid19opendatavaccini.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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#' Commissario straordinario per l'emergenza Covid-19, Presidenza del Consiglio dei Ministri
#'
#' Data source for: Italy
#'
#' @param level 1, 2
#'
#' @section Level 1:
#' - total vaccine doses administered
#' - people with at least one vaccine dose
#' - people fully vaccinated
#'
#' @section Level 2:
#' - total vaccine doses administered
#' - people with at least one vaccine dose
#' - people fully vaccinated
#'
#' @source https://github.com/italia/covid19-opendata-vaccini
#'
#' @keywords internal
#'
github.italia.covid19opendatavaccini <- function(level){
if(!level %in% 1:2) return(NULL)
# download
url <- "https://raw.githubusercontent.com/italia/covid19-opendata-vaccini/master/dati/somministrazioni-vaccini-latest.csv"
x <- read.csv(url)
# format
x <- map_data(x, c(
"data" = "date",
"forn" = "type",
"N2" = "state",
"d1" = "first",
"d2" = "second",
"dpi" = "oneshot",
"db1" = "extra_1",
"db2" = "extra_2"
))
# people vaccinated and total doses
x <- x %>%
dplyr::mutate(
vaccines = first + second + oneshot + extra_1 + extra_2,
people_vaccinated = first + oneshot,
people_fully_vaccinated = second + oneshot + first*(type=="Janssen"))
if(level==1){
# vaccines
x <- x %>%
# for each date
dplyr::group_by(date) %>%
# compute total counts
dplyr::summarise(
vaccines = sum(vaccines),
people_vaccinated = sum(people_vaccinated),
people_fully_vaccinated = sum(people_fully_vaccinated)) %>%
# sort by date
dplyr::arrange(date) %>%
# cumulate
dplyr::mutate(
vaccines = cumsum(vaccines),
people_vaccinated = cumsum(people_vaccinated),
people_fully_vaccinated = cumsum(people_fully_vaccinated))
}
if(level==2){
# vaccines
x <- x %>%
# for each date and region
dplyr::group_by(date, state) %>%
# compute total counts
dplyr::summarise(
vaccines = sum(vaccines),
people_vaccinated = sum(people_vaccinated),
people_fully_vaccinated = sum(people_fully_vaccinated)) %>%
# group by date
dplyr::group_by(state) %>%
# sort by date
dplyr::arrange(date) %>%
# cumulate
dplyr::mutate(
vaccines = cumsum(vaccines),
people_vaccinated = cumsum(people_vaccinated),
people_fully_vaccinated = cumsum(people_fully_vaccinated))
}
# format date
x$date <- as.Date(x$date)
return(x)
}