#' Wesley Cota
#'
#' Data source for: Brazil
#'
#' @param level 1, 2, 3
#'
#' @section Level 1:
#' - confirmed cases
#' - deaths
#' - recovered
#' - tests
#' - total vaccine doses administered
#' - people with at least one vaccine dose
#' - people fully vaccinated
#'
#' @section Level 2:
#' - confirmed cases
#' - deaths
#' - recovered
#' - tests
#' - total vaccine doses administered
#' - people with at least one vaccine dose
#' - people fully vaccinated
#'
#' @section Level 3:
#' - confirmed cases
#' - deaths
#'
#' @source https://github.com/wcota/covid19br
#'
#' @keywords internal
#'
github.wcota.covid19br <- function(level){
if(!level %in% 1:3) return(NULL)
if(level==1 | level==2){
# download
url <- "https://raw.githubusercontent.com/wcota/covid19br/master/cases-brazil-states.csv"
x <- read.csv(url)
# formatting
x <- map_data(x, c(
"date" = "date",
"state" = "state",
"deaths" = "deaths",
"totalCases" = "confirmed",
"recovered" = "recovered",
"tests" = "tests",
"vaccinated" = "first",
"vaccinated_second" = "second",
"vaccinated_single" = "oneshot",
"vaccinated_third" = "extra"
))
# total number of doses
x <- x %>%
dplyr::mutate(
vaccines = first + replace_na(second, 0) + replace_na(oneshot, 0) + replace_na(extra, 0),
people_vaccinated = first + replace_na(oneshot, 0),
people_fully_vaccinated = second + replace_na(oneshot, 0))
# filter
idx <- which(x$state=="TOTAL")
if(level==1)
x <- x[idx,]
if(level==2)
x <- x[-idx,]
}
else {
# urls
urls <- sprintf(
"https://raw.githubusercontent.com/wcota/covid19br/master/cases-brazil-cities-time%s.csv.gz",
c('', paste0('_', 2020:2030))
)
# filter by urls that actually exist
urls <- urls[!sapply(urls, httr::http_error)]
# process data by year
x <- lapply(urls, function(url){
# download
tmp <- tempfile()
download.file(url, destfile=tmp, mode="wb", quiet = TRUE)
x <- read.csv(tmp)
unlink(tmp)
# formatting
x <- map_data(x, c(
"date" = "date",
"ibgeID" = "code",
"state" = "state",
"deaths" = "deaths",
"totalCases" = "confirmed"
))
# filter cities
x <- x[nchar(x$code)==7,]
})
# merge all years together
x <- do.call(rbind, x)
}
# date
x$date <- as.Date(x$date)
return(x)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.