diff --git a/.github/workflows/Estonia.yaml b/.github/workflows/Estonia.yaml new file mode 100644 index 00000000..f345ba60 --- /dev/null +++ b/.github/workflows/Estonia.yaml @@ -0,0 +1,48 @@ +on: + schedule: + - cron: '36 12 * * *' + workflow_dispatch: + +name: Estonia + +jobs: + Estonia: + runs-on: macOS-latest + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v2 + + - uses: r-lib/actions/setup-r@v1 + + - name: Query dependencies + run: | + install.packages('remotes') + saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) + writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") + shell: Rscript {0} + + - name: Cache R packages + uses: actions/cache@v2 + with: + path: ${{ env.R_LIBS_USER }} + key: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-${{ hashFiles('.github/depends.Rds') }} + restore-keys: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1- + + - name: Install dependencies + run: | + install.packages(c("remotes")) + remotes::install_deps(dependencies = TRUE) + install.packages("devtools") + shell: Rscript {0} + + - name: Install package + run: R CMD INSTALL . + + - name: Test dataset + run: | + options("testDownload" = TRUE) + options("testSource" = "Estonia") + devtools::load_all() + testthat::test_file("tests/testthat/test-regional-datasets.R", reporter = c("summary", "fail")) + shell: Rscript {0} diff --git a/DESCRIPTION b/DESCRIPTION index 86fd1d5f..61168eb0 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: covidregionaldata Title: Subnational Data for COVID-19 Epidemiology -Version: 0.9.2.1000 +Version: 0.9.2.2000 Authors@R: c(person(given = "Joseph", family = "Palmer", @@ -121,4 +121,4 @@ Encoding: UTF-8 Language: en-gb LazyData: true Roxygen: list(markdown = TRUE) -RoxygenNote: 7.1.1 +RoxygenNote: 7.1.2 diff --git a/NAMESPACE b/NAMESPACE index ce3bcc43..00588964 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -10,6 +10,7 @@ export(Covid19DataHub) export(Cuba) export(DataClass) export(ECDC) +export(Estonia) export(France) export(Germany) export(Google) @@ -73,6 +74,7 @@ importFrom(dplyr,slice_tail) importFrom(dplyr,starts_with) importFrom(dplyr,summarise) importFrom(dplyr,tally) +importFrom(dplyr,transmute) importFrom(dplyr,ungroup) importFrom(dplyr,vars) importFrom(httr,GET) diff --git a/NEWS.md b/NEWS.md index 8f93cbdd..38acad4c 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,11 @@ +# covidregionaldata 0.9.3 + +This release is currrently under development + +## New data sets + +- Support for level 1 region data in Estonia (thanks to @RichardMN). See `?Estonia` for details. + # covidregionaldata 0.9.2 This release adds support for the Covid19 Data Hub which includes Google and Apple mobility data amongst a large range of other data sets, data from the European Commission's Joint Research Centre which is at both the regional and national level, and individual sources for regional data from several countries. Package updates have been made in line with a software review at the [Journal of Open Source Software](https://github.com/openjournals/joss-reviews/issues/3290). Finally, this release exposes more of the testing infrastructure to users and adds a package hexsticker. diff --git a/R/Estonia.R b/R/Estonia.R new file mode 100644 index 00000000..564601b8 --- /dev/null +++ b/R/Estonia.R @@ -0,0 +1,90 @@ +#' Estonia Class for downloading, cleaning and processing notification data +#' @description Information for downloading, cleaning +#' and processing COVID-19 region data for Estonia +#' +# nolint start +#' @source \url{https://www.terviseamet.ee/et/koroonaviirus/avaandmed} +# nolint end +#' @export +#' @concept dataset +#' @family subnational +#' @examples +#' \dontrun{ +#' region <- Estonia$new(verbose = TRUE, steps = TRUE, get = TRUE) +#' region$return() +#' } +Estonia <- R6::R6Class("Estonia", + inherit = DataClass, + public = list( + + # Core Attributes + #' @field origin name of origin to fetch data for + origin = "Estonia", + #' @field supported_levels A list of supported levels. + supported_levels = list("1"), + #' @field supported_region_names A list of region names in order of level. + supported_region_names = list("1" = "county"), + #' @field supported_region_codes A list of region codes in order of level. + supported_region_codes = list("1" = "iso_3166_2"), + #' @field common_data_urls List of named links to raw data. + # nolint start + common_data_urls = list( + "main" = "https://opendata.digilugu.ee/opendata_covid19_test_county_all.csv" # nolint + ), + # nolint end + #' @field source_data_cols existing columns within the raw data + source_data_cols = c("cases_new", "tested_new", + "cases_total", "tested_total"), + #' @field source_text Plain text description of the source of the data + source_text = "Estonian Ministry of Social Affairs", + #' @field source_url Website address for explanation/introduction of the + #' data + source_url = "https://www.terviseamet.ee/et/koroonaviirus/avaandmed", + + + #' @description Set up a table of region codes for clean data + #' @importFrom tibble tibble + set_region_codes = function() { + self$codes_lookup$`1` <- tibble( + code = c("EE-37", + "EE-39", "EE-45", "EE-52", "EE-50", "EE-56", "EE-60", "EE-68", + "EE-64", "EE-71", "EE-74", "EE-79", "EE-81", "EE-84", "EE-87", + NA), + region = c("Harju", "Hiiu", "Ida-Viru", "J\u00e4rva", + "J\u00f5geva", "L\u00e4\u00e4ne", "L\u00e4\u00e4ne-Viru", + "P\u00e4rnu", "P\u00f5lva", "Rapla", "Saare", "Tartu", + "Valga", "Viljandi", "V\u00f5ru", "Unknown") + ) + }, + + #' @description Estonia specific state level data cleaning + #' @importFrom dplyr select mutate transmute + #' @importFrom tidyr pivot_wider + #' @importFrom rlang .data + #' + clean_common = function() { + self$data$clean <- self$data$raw[["main"]] %>% + pivot_wider( + id_cols = c("LastStatisticsDate", "StatisticsDate", "Country", + "CountryEHAK", "County", "CountyEHAK"), + names_from = ResultValue, + values_from = c("DailyTests", "TotalTests", + "DailyCases", "TotalCases")) %>% + select(-Country, -CountryEHAK) %>% + mutate(TestPositivity = + ifelse((DailyTests_N + DailyTests_P) > 0, + (DailyTests_P / (DailyTests_N + DailyTests_P)), + NA)) %>% + transmute( + level_1_region = gsub(" maakond", "", .data$County), + level_1_region_code = gsub("00", "EE-", .data$CountyEHAK), + date = .data$StatisticsDate, + cases_new = .data$DailyCases_P, + tested_new = .data$DailyTests_P + .data$DailyTests_N, + cases_total = .data$TotalCases_P, + tested_total = .data$TotalTests_P + .data$TotalTests_N, + test_positivity = .data$TestPositivity + ) + } + ) +) diff --git a/data/all_country_data.rda b/data/all_country_data.rda index f95a7f51..cf06d6ea 100644 Binary files a/data/all_country_data.rda and b/data/all_country_data.rda differ diff --git a/man/Belgium.Rd b/man/Belgium.Rd index 16578b4d..d552ff29 100644 --- a/man/Belgium.Rd +++ b/man/Belgium.Rd @@ -23,6 +23,7 @@ Subnational data sources \code{\link{Colombia}}, \code{\link{Covid19DataHub}}, \code{\link{Cuba}}, +\code{\link{Estonia}}, \code{\link{France}}, \code{\link{Germany}}, \code{\link{Google}}, diff --git a/man/Brazil.Rd b/man/Brazil.Rd index 1016a6aa..81c461f4 100644 --- a/man/Brazil.Rd +++ b/man/Brazil.Rd @@ -26,6 +26,7 @@ Subnational data sources \code{\link{Colombia}}, \code{\link{Covid19DataHub}}, \code{\link{Cuba}}, +\code{\link{Estonia}}, \code{\link{France}}, \code{\link{Germany}}, \code{\link{Google}}, diff --git a/man/Canada.Rd b/man/Canada.Rd index 022d5277..52ef95fd 100644 --- a/man/Canada.Rd +++ b/man/Canada.Rd @@ -23,6 +23,7 @@ Subnational data sources \code{\link{Colombia}}, \code{\link{Covid19DataHub}}, \code{\link{Cuba}}, +\code{\link{Estonia}}, \code{\link{France}}, \code{\link{Germany}}, \code{\link{Google}}, diff --git a/man/Colombia.Rd b/man/Colombia.Rd index e8ff1a8d..50065b17 100644 --- a/man/Colombia.Rd +++ b/man/Colombia.Rd @@ -23,6 +23,7 @@ Subnational data sources \code{\link{Canada}}, \code{\link{Covid19DataHub}}, \code{\link{Cuba}}, +\code{\link{Estonia}}, \code{\link{France}}, \code{\link{Germany}}, \code{\link{Google}}, diff --git a/man/Covid19DataHub.Rd b/man/Covid19DataHub.Rd index b305691f..5489abae 100644 --- a/man/Covid19DataHub.Rd +++ b/man/Covid19DataHub.Rd @@ -77,6 +77,7 @@ Subnational data sources \code{\link{Canada}}, \code{\link{Colombia}}, \code{\link{Cuba}}, +\code{\link{Estonia}}, \code{\link{France}}, \code{\link{Germany}}, \code{\link{Google}}, diff --git a/man/Cuba.Rd b/man/Cuba.Rd index 4b688582..fc8d32f4 100644 --- a/man/Cuba.Rd +++ b/man/Cuba.Rd @@ -23,6 +23,7 @@ Subnational data sources \code{\link{Canada}}, \code{\link{Colombia}}, \code{\link{Covid19DataHub}}, +\code{\link{Estonia}}, \code{\link{France}}, \code{\link{Germany}}, \code{\link{Google}}, diff --git a/man/Estonia.Rd b/man/Estonia.Rd new file mode 100644 index 00000000..5c29e1f1 --- /dev/null +++ b/man/Estonia.Rd @@ -0,0 +1,129 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/Estonia.R +\name{Estonia} +\alias{Estonia} +\title{Estonia Class for downloading, cleaning and processing notification data} +\source{ +\url{https://www.terviseamet.ee/et/koroonaviirus/avaandmed} +} +\description{ +Information for downloading, cleaning +and processing COVID-19 region data for Estonia +} +\examples{ +\dontrun{ +region <- Estonia$new(verbose = TRUE, steps = TRUE, get = TRUE) +region$return() +} +} +\seealso{ +Subnational data sources +\code{\link{Belgium}}, +\code{\link{Brazil}}, +\code{\link{Canada}}, +\code{\link{Colombia}}, +\code{\link{Covid19DataHub}}, +\code{\link{Cuba}}, +\code{\link{France}}, +\code{\link{Germany}}, +\code{\link{Google}}, +\code{\link{India}}, +\code{\link{Italy}}, +\code{\link{JHU}}, +\code{\link{Lithuania}}, +\code{\link{Mexico}}, +\code{\link{Netherlands}}, +\code{\link{SouthAfrica}}, +\code{\link{Switzerland}}, +\code{\link{UK}}, +\code{\link{USA}} +} +\concept{dataset} +\concept{subnational} +\section{Super class}{ +\code{\link[covidregionaldata:DataClass]{covidregionaldata::DataClass}} -> \code{Estonia} +} +\section{Public fields}{ +\if{html}{\out{