From 01572c1a2d4f4dd116705b4567168dca5412d852 Mon Sep 17 00:00:00 2001 From: Richard Martin-Nielsen Date: Wed, 3 Nov 2021 22:20:47 +0200 Subject: [PATCH 01/16] Initial adjustment for new data source Switch to using Socrata api to download case list from Colombian open data source. Aggregation to level 1 not yet working. --- NAMESPACE | 2 + R/Colombia.R | 98 ++++++++++++++++++++++++++++++++++--------------- man/Colombia.Rd | 30 ++++++++++++++- 3 files changed, 99 insertions(+), 31 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 5cdf4ccd..22eb3cbe 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -44,6 +44,7 @@ export(test_download) export(test_processing) export(test_return) importFrom(R6,R6Class) +importFrom(RSocrata,read.socrata) importFrom(countrycode,countrycode) importFrom(countrycode,countryname) importFrom(dplyr,"%>%") @@ -90,6 +91,7 @@ importFrom(lifecycle,deprecated) importFrom(lifecycle,is_present) importFrom(lubridate,as_date) importFrom(lubridate,dmy) +importFrom(lubridate,dmy_hms) importFrom(lubridate,mdy) importFrom(lubridate,month) importFrom(lubridate,year) diff --git a/R/Colombia.R b/R/Colombia.R index c1a3154c..1f41f223 100644 --- a/R/Colombia.R +++ b/R/Colombia.R @@ -3,6 +3,7 @@ #' and processing COVID-19 region data for Colombia #' # nolint start +#' @source \url{https://www.datos.gov.co/Salud-y-Protecci-n-Social/Casos-positivos-de-COVID-19-en-Colombia/gt2j-8ykr} #' @source \url{https://github.com/danielcs88/colombia_covid-19/} # nolint end #' @export @@ -21,24 +22,30 @@ Colombia <- R6::R6Class("Colombia", #' @field origin name of origin to fetch data for origin = "Colombia", #' @field supported_levels A list of supported levels. - supported_levels = list("1"), + supported_levels = list("1", "2"), #' @field supported_region_names A list of region names in order of level. - supported_region_names = list("1" = "departamento"), + supported_region_names = list( + "1" = "departamento", + "2" = "municipio" + ), #' @field supported_region_codes A list of region codes in order of level. - supported_region_codes = list("1" = "iso_3166_2"), + supported_region_codes = list( + "1" = "iso_3166_2", + "2" = "codigo_municipio" + ), #' @field common_data_urls List of named links to raw data. # nolint start common_data_urls = list( - "main" = "https://raw.githubusercontent.com/danielcs88/colombia_covid-19/master/datos/cronologia.csv" + "main" = "https://www.datos.gov.co/resource/gt2j-8ykr.csv?$select=fecha_diagnostico,departamento_nom,ciudad_municipio_nom,ciudad_municipio" ), # nolint end #' @field source_data_cols existing columns within the raw data - source_data_cols = c("cases_total"), + source_data_cols = c("cases_new"), #' @field source_text Plain text description of the source of the data - source_text = "Daniel C\u00e1rdenas", + source_text = "Datos abiertos Colombia (Colombia open data)", #' @field source_url Website address for explanation/introduction of the #' data - source_url = "https://github.com/danielcs88/colombia_covid-19/", + source_url = "https://www.datos.gov.co/Salud-y-Protecci-n-Social/Casos-positivos-de-COVID-19-en-Colombia/gt2j-8ykr", # nolint #' @description Set up a table of region codes for clean data #' @importFrom tibble tibble @@ -47,38 +54,71 @@ Colombia <- R6::R6Class("Colombia", self$codes_lookup$`1` <- covidregionaldata::colombia_codes }, - #' @description Colombia specific state level data cleaning - #' @importFrom dplyr select mutate - #' @importFrom lubridate ymd + #' @description Colombia specific download using Socrata API + #' @importFrom RSocrata read.socrata + download = function () { + message_verbose(self$verbose, + "Downloading Colombia data. This may take a while.") + self$data$raw$main <- read.socrata(self$data_urls[["main"]]) + }, + + #' @description Colombia specific data cleaning + #' @importFrom dplyr select mutate rename summarise group_by + #' @importFrom lubridate dmy_hms as_date #' @importFrom stringr str_replace_all str_to_sentence str_to_title #' @importFrom rlang .data #' clean_common = function() { self$data$clean <- self$data$raw[["main"]] %>% - select( - date = .data$fecha, - level_1_region = .data$departamento, - cases_total = .data$casos - ) %>% - mutate( - date = ymd(.data$date), - level_1_region = iconv(.data$level_1_region, - from = "UTF-8", - to = "ASCII//TRANSLIT" - ), - level_1_region = str_replace_all(.data$level_1_region, " D.C.", ""), - level_1_region = str_replace_all( - .data$level_1_region, - "San Andres y Providencia", - "San Andres, Providencia y Santa Catalina" - ), - level_1_region = str_to_sentence(.data$level_1_region), - level_1_region = str_to_title(.data$level_1_region) + rename( + date = .data$fecha_diagnostico, + level_1_region = .data$departamento_nom, + level_2_region = .data$ciudad_municipio_nom, + level_2_region_code = .data$ciudad_municipio ) %>% + group_by(date, level_1_region, level_2_region, level_2_region_code) %>% + summarise(cases_new = n(), .groups = "drop") %>% + mutate(date = as_date(dmy_hms(date)), + level_1_region = iconv(.data$level_1_region, + from = "UTF-8", + to = "ASCII//TRANSLIT" + ), + level_1_region = + str_replace_all(.data$level_1_region, + c(" D.C." = "", + "San Andres y Providencia" + = "San Andres, Providencia y Santa Catalina", + "Norte Santander" = "Norte De Santander" + ) + ), + level_1_region = str_to_sentence(.data$level_1_region), + level_1_region = str_to_title(.data$level_1_region)) %>% left_join( self$codes_lookup$`1`, by = c("level_1_region" = "level_1_region") ) + }, + + #' @description Colombia Specific Department Level Data Cleaning + #' + #' Aggregates data to the level 1 (department) regional level. Data is + #' provided by the source at the level 2 (municipality) regional level. + #' + #' @importFrom dplyr group_by summarise ungroup full_join across if_else + #' @importFrom tidyselect vars_select_helpers + clean_level_1 = function() { + self$data$clean <- self$data$clean %>% + group_by( + .data$date, + .data$level_1_region, .data$level_1_region_code + ) %>% + summarise( + across( + tidyselect::vars_select_helpers$where(is.numeric), + sum + ) + ) %>% + ungroup() } ) ) diff --git a/man/Colombia.Rd b/man/Colombia.Rd index d1f88abb..8fbbdf6d 100644 --- a/man/Colombia.Rd +++ b/man/Colombia.Rd @@ -4,6 +4,8 @@ \alias{Colombia} \title{Colombia Class for downloading, cleaning and processing notification data} \source{ +\url{https://www.datos.gov.co/Salud-y-Protecci-n-Social/Casos-positivos-de-COVID-19-en-Colombia/gt2j-8ykr} + \url{https://github.com/danielcs88/colombia_covid-19/} } \description{ @@ -70,7 +72,9 @@ data} \subsection{Public methods}{ \itemize{ \item \href{#method-set_region_codes}{\code{Colombia$set_region_codes()}} +\item \href{#method-download}{\code{Colombia$download()}} \item \href{#method-clean_common}{\code{Colombia$clean_common()}} +\item \href{#method-clean_level_1}{\code{Colombia$clean_level_1()}} \item \href{#method-clone}{\code{Colombia$clone()}} } } @@ -79,7 +83,6 @@ data} \itemize{ \item \out{}\href{../../covidregionaldata/html/DataClass.html#method-available_regions}{\code{covidregionaldata::DataClass$available_regions()}}\out{} \item \out{}\href{../../covidregionaldata/html/DataClass.html#method-clean}{\code{covidregionaldata::DataClass$clean()}}\out{} -\item \out{}\href{../../covidregionaldata/html/DataClass.html#method-download}{\code{covidregionaldata::DataClass$download()}}\out{} \item \out{}\href{../../covidregionaldata/html/DataClass.html#method-download_JSON}{\code{covidregionaldata::DataClass$download_JSON()}}\out{} \item \out{}\href{../../covidregionaldata/html/DataClass.html#method-filter}{\code{covidregionaldata::DataClass$filter()}}\out{} \item \out{}\href{../../covidregionaldata/html/DataClass.html#method-get}{\code{covidregionaldata::DataClass$get()}}\out{} @@ -100,16 +103,39 @@ Set up a table of region codes for clean data \if{html}{\out{
}}\preformatted{Colombia$set_region_codes()}\if{html}{\out{
}} } +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-download}{}}} +\subsection{Method \code{download()}}{ +Colombia specific download using Socrata API +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Colombia$download()}\if{html}{\out{
}} +} + } \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-clean_common}{}}} \subsection{Method \code{clean_common()}}{ -Colombia specific state level data cleaning +Colombia specific data cleaning \subsection{Usage}{ \if{html}{\out{
}}\preformatted{Colombia$clean_common()}\if{html}{\out{
}} } +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-clean_level_1}{}}} +\subsection{Method \code{clean_level_1()}}{ +Colombia Specific Department Level Data Cleaning + +Aggregates data to the level 1 (department) regional level. Data is +provided by the source at the level 2 (municipality) regional level. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Colombia$clean_level_1()}\if{html}{\out{
}} +} + } \if{html}{\out{
}} \if{html}{\out{}} From f982a25e8aaf4a7111ef8dff305c0d9c98f53352 Mon Sep 17 00:00:00 2001 From: Richard Martin-Nielsen Date: Thu, 4 Nov 2021 22:18:22 +0200 Subject: [PATCH 02/16] Colombia fixes --- R/Colombia.R | 33 +++++-------- data-raw/colombia_codes.R | 46 +++++++++++++++++- data/all_country_data.rda | Bin 3010 -> 3074 bytes data/colombia_codes.rda | Bin 548 -> 8851 bytes man/colombia_codes.Rd | 2 +- .../testthat/custom_data/Colombia_level_1.rds | Bin 1808 -> 800 bytes .../testthat/custom_data/Colombia_level_2.rds | Bin 0 -> 800 bytes 7 files changed, 56 insertions(+), 25 deletions(-) create mode 100644 tests/testthat/custom_data/Colombia_level_2.rds diff --git a/R/Colombia.R b/R/Colombia.R index 1f41f223..15792978 100644 --- a/R/Colombia.R +++ b/R/Colombia.R @@ -36,7 +36,7 @@ Colombia <- R6::R6Class("Colombia", #' @field common_data_urls List of named links to raw data. # nolint start common_data_urls = list( - "main" = "https://www.datos.gov.co/resource/gt2j-8ykr.csv?$select=fecha_diagnostico,departamento_nom,ciudad_municipio_nom,ciudad_municipio" + "main" = "https://www.datos.gov.co/resource/gt2j-8ykr.csv?$select=fecha_diagnostico,ciudad_municipio" ), # nolint end #' @field source_data_cols existing columns within the raw data @@ -51,7 +51,10 @@ Colombia <- R6::R6Class("Colombia", #' @importFrom tibble tibble #' @importFrom dplyr mutate set_region_codes = function() { - self$codes_lookup$`1` <- covidregionaldata::colombia_codes + self$codes_lookup$`1` <- covidregionaldata::colombia_codes %>% + select(level_1_region, level_1_region_code) %>% + unique() + self$codes_lookup$`2` <- covidregionaldata::colombia_codes }, #' @description Colombia specific download using Socrata API @@ -72,30 +75,15 @@ Colombia <- R6::R6Class("Colombia", self$data$clean <- self$data$raw[["main"]] %>% rename( date = .data$fecha_diagnostico, - level_1_region = .data$departamento_nom, - level_2_region = .data$ciudad_municipio_nom, level_2_region_code = .data$ciudad_municipio ) %>% - group_by(date, level_1_region, level_2_region, level_2_region_code) %>% + group_by(date, level_2_region_code) %>% summarise(cases_new = n(), .groups = "drop") %>% mutate(date = as_date(dmy_hms(date)), - level_1_region = iconv(.data$level_1_region, - from = "UTF-8", - to = "ASCII//TRANSLIT" - ), - level_1_region = - str_replace_all(.data$level_1_region, - c(" D.C." = "", - "San Andres y Providencia" - = "San Andres, Providencia y Santa Catalina", - "Norte Santander" = "Norte De Santander" - ) - ), - level_1_region = str_to_sentence(.data$level_1_region), - level_1_region = str_to_title(.data$level_1_region)) %>% + level_2_region_code=sprintf("%05d", level_2_region_code)) %>% left_join( - self$codes_lookup$`1`, - by = c("level_1_region" = "level_1_region") + self$codes_lookup$`2`, + by = c("level_2_region_code" = "level_2_region_code") ) }, @@ -104,10 +92,11 @@ Colombia <- R6::R6Class("Colombia", #' Aggregates data to the level 1 (department) regional level. Data is #' provided by the source at the level 2 (municipality) regional level. #' - #' @importFrom dplyr group_by summarise ungroup full_join across if_else + #' @importFrom dplyr group_by summarise ungroup full_join across if_else select #' @importFrom tidyselect vars_select_helpers clean_level_1 = function() { self$data$clean <- self$data$clean %>% + select(-level_2_region_code, -level_2_region) %>% group_by( .data$date, .data$level_1_region, .data$level_1_region_code diff --git a/data-raw/colombia_codes.R b/data-raw/colombia_codes.R index 8cb8792b..8c6202a5 100644 --- a/data-raw/colombia_codes.R +++ b/data-raw/colombia_codes.R @@ -22,7 +22,7 @@ level_1_region <- read_html(co_iso) %>% html_text() level_1_region <- level_1_region[1:33] -colombia_codes <- data.frame( +colombia_departments <- data.frame( level_1_region_code, level_1_region, stringsAsFactors = FALSE @@ -37,7 +37,7 @@ colombia_codes <- data.frame( replacements <- list( "Distrito Capital De Bogota" = "Bogota" ) -colombia_codes <- colombia_codes %>% +colombia_departments <- colombia_departments %>% mutate( level_1_region = ifelse(level_1_region %in% names(replacements), replacements[level_1_region], @@ -46,5 +46,47 @@ colombia_codes <- colombia_codes %>% level_1_region = as.character(level_1_region) ) +# Download list of municipalities and codes +# + +colombia_municipalities_sheet <- download_excel( + "https://www.dane.gov.co/files/censo2005/provincias/subregiones.xls", + "colombia_municipalities.xls", + verbose = TRUE, + transpose = FALSE, + sheet = "Hoja1" +) + colombia_municipalities <- colombia_municipalities_sheet %>% + select(level_2_region = NOM_MPIO, + level_2_region_code = DPTOC_MPIO, + level_1_region = NOM_DEPTO) %>% + mutate( + level_1_region = stri_trans_general(level_1_region, "latin-ascii"), + level_1_region = stri_trim_both(level_1_region), + level_1_region = stringr::str_to_title(level_1_region), + level_1_region = + str_replace_all(.data$level_1_region, + c(" D.c." = "", + "Archipielago De San Andres" + = "San Andres, Providencia Y Santa Catalina", + "Norte Santander" = "Norte De Santander" + ) + ), + level_2_region = stri_trans_general(level_2_region, "latin-ascii"), + level_2_region = stri_trim_both(level_2_region), + level_2_region = + str_replace_all(.data$level_2_region, + c(" D.C." = "" + ) + ), + level_2_region = stringr::str_to_title(level_2_region), + ) + + +# anti_join(colombia_municipalities, colombia_departments, by=c("level_1_region")) +colombia_codes <- left_join(colombia_municipalities, + colombia_departments, + by=c("level_1_region")) + # update package region_codes usethis::use_data(colombia_codes, overwrite = TRUE) diff --git a/data/all_country_data.rda b/data/all_country_data.rda index 0d177cf3b295c98fd3073a6bff41fed06d6b0b9d..2555906498bbe297ca0199245f4626e1e9f99491 100644 GIT binary patch literal 3074 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 QKo0o3k}1N3g}ot4AiHgorvLx| literal 3010 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 E(7-p2v;Y7A diff --git a/data/colombia_codes.rda b/data/colombia_codes.rda index efc435d6587b37581463d9b043012ca1b64e8b75..81666ce6035ffb9dd66865f9d6afd21dba13249c 100644 GIT binary patch literal 8851 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 diff --git a/man/colombia_codes.Rd b/man/colombia_codes.Rd index 2292ad7a..40ff0e81 100644 --- a/man/colombia_codes.Rd +++ b/man/colombia_codes.Rd @@ -5,7 +5,7 @@ \alias{colombia_codes} \title{Region Codes for Colombia Dataset.} \format{ -An object of class \code{data.frame} with 33 rows and 2 columns. +An object of class \code{data.frame} with 1119 rows and 4 columns. } \usage{ colombia_codes diff --git a/tests/testthat/custom_data/Colombia_level_1.rds b/tests/testthat/custom_data/Colombia_level_1.rds index 7f131bb85981280d0a768f614a28bedcda5b58d7..72c9db9b1f25cd3851b1372a3661e716164c913f 100644 GIT binary patch literal 800 zcmV+*1K<1~iwFP!000001MOK&XcIvcew!a51!0?}f+zJNVln#@+oVAcD)u0Pq*~A@ zly#Hpf=Q%l5pP};J*XfER=jxdWJEmaT|5bb(kR}n;8og7iylm8GTEfN*%zH<(zHeB z*EjRNnfEjQVbAsfKoCNb1i>&VLU`iL*nt#4V1QI4!ciF@kO_W62qHvA6Plu_imvL~ zZZ)maKbz4<5vE^PG|jt9lG|7`p>n%HyF_(eps@}NK4|>e;Nz^JF{A!FFn;nxv%y32 zF=#&4U?(Oe&>Ehouh2y90{;EkuZ<`p-b4~3bd1n2;vh!wJMSqm>P^VQUDl^K1M-ub z%01ou3j`$u<{^+krb8ehYf6H1M9{S$Y&rXJj?OIqP@xME$wN+X>XFk3)r+#T(fsym z+<5JGc^v%g9CRP>pVa&Wx^o1Eix9G|j0(|XbBd;bzAaFKe=5+|2uh$ncumRtk1Etf z_pdD<7af*2?^T1Y9D&;fCD!A)DsU10C$=mh@H*+K^DR$cgQ%kfW-5U_jMsr6r*6_a z+F>Onh7k6&;M8xrErTu`VN-$65gHWweBr;&dis-pV;<_8{SE@y4)grvST- zFvJ!C25TVgTW|md?lh%0zB%hLaMYW92cH4#|K;oxd%%3x%ZnhH*Xw{o1%f94hwlQU z=ZL)Tjbl3ij#}+FUM2Y0LL2YWjb-YPPDUJnb6){21erV^YSeE5WOY`~K4g-@OatUz z5j+-$i+cg`Lrz^~h2iB1f+WE6g%&DtfEV{#s05kbuD_mh;>|?6&c@qJ3-4|_>ud4B zWO%;^;M0;f=E)dWzYuxTrT^~Hw$WyOxdB(7&)Lp((V#I>9~87q9&MQMRqw%D$X2W5lPXi6d9@$aLvi+zx=ALV+9P eU#(W#M#LZ1SgN_qg$jmMr2Hz8pgsgb9RL6gbbo6A literal 1808 zcmV+r2k-bFiwFP!000001MQl9Y!h`D$8YcJ#LkWLFJX$)|0%C)TJF?pG0D+ie4*DV@nGB%Sy4rcL$nky zx60fOQK2Kr+0i{79u>-x)5TAbI!~7TN7gZ(Yl_`GCfnY19jazlv zd23^fnIuI|E?Kgf*Uoz~*|a2it=GwSj+rNy%c{S|l9QR8$z2vRZ>9gBhj+BV%bafi z5ndyu*lDj|{hp(T*EyLYQu;)#VT;Y}P_zn`Doeg1uX8#?x82D%B-@mmI!d*<*hbmS z_}P-PD`dO>7(bftRlP1&#cic#GY@kQoJ@HNjl z&wRTni5-j~re=gwGH57n85v_rj43gu#F!FeO8&Vi8JLT~Q!_fIWF+59hW;8dFf_)L z7*jILlnfq<*pV@&#F&yhPs#8@am)M|Q!;v|WF+59?mQ*88HzhzWk&Cm2>4%x%ior2 zDp=cput?=LU z2IA&P$ZN^9fpv?=Q zEev^=dy&^3A`X9&-hhulDfxYr{6C3(!8NVWTGR^(h(mS6!H4y(o_ugPhxN$Du3tV6lM=`9)=FKkO+eoDAUH*KW`V&$w zG!DyfeaLueFF0(C;cz&HLl60XkMuj@Fqb&c`=enz`fm(C&!2+-=8uWPTj;NCD&qDC z`s^&i{!S5G0z2U=m_xpO$Pa#kI24Dx&=joyngtENX$FTG*xxN6KT>A~hrZq5AY%?D zy}Ak7TH-+dcQq3SGxR_%`L83T`8e?b^qU0uZkR&ael?ajkpBjSIE2w>b29YjENIIq;vgdKcntk_ z9)kbQqlg3Ni9;oEID~y6E7n7W#DNiqufZq$VHP;hb*wwntm}=*@NIf+Avo;M2ZyGU z;82STIsaT=>cjpQv1px1I*T-ubOGh%Qk+k54rv~(PbXb&g+4{`GSWGu7SaOJ2S_tW zSJM6!RDWeX#iYfQS4erqwEhCE7ty{VIzEHe=ktE(__Gwpa^U_skKs6Q|D1=x0cvo7 z{#zWlf6n7xaTxCU!2NR`|91}DKj&d^fO7ww$A5*xaMy=e4%~n2T-+lLF;5F5dMZUb zJt3GtPYfnf948EZh#+=vlAF22*e4B=%VfpHRHVlB(b0H1nr@dRNwll7QsRg{kwAAC z`d0=05e5D1!Z0Pq50tQ1FooIGfx9RpsbjvW71_I5`diK1ZIS5a1im?u^D7fI2mBU| zL#$+qsu6Xo{Wp*7%p>z#KJkvqyJ%?aKtttT(c>AWpFuBK+_abm6ZmjwyLg2ZhginE zlFD0ih?3J4(*!S=s_iSmU~%&U$0`+B-)Z9s(M4E|Vg!&*VdTe>BCX{p#!M yOO9!r8%|bNOC^pniW0Pl-$~S_m1UMGTCE}a?SC`5m@|5_rS~uB)>-$GD*yogONliA diff --git a/tests/testthat/custom_data/Colombia_level_2.rds b/tests/testthat/custom_data/Colombia_level_2.rds new file mode 100644 index 0000000000000000000000000000000000000000..72c9db9b1f25cd3851b1372a3661e716164c913f GIT binary patch literal 800 zcmV+*1K<1~iwFP!000001MOK&XcIvcew!a51!0?}f+zJNVln#@+oVAcD)u0Pq*~A@ zly#Hpf=Q%l5pP};J*XfER=jxdWJEmaT|5bb(kR}n;8og7iylm8GTEfN*%zH<(zHeB z*EjRNnfEjQVbAsfKoCNb1i>&VLU`iL*nt#4V1QI4!ciF@kO_W62qHvA6Plu_imvL~ zZZ)maKbz4<5vE^PG|jt9lG|7`p>n%HyF_(eps@}NK4|>e;Nz^JF{A!FFn;nxv%y32 zF=#&4U?(Oe&>Ehouh2y90{;EkuZ<`p-b4~3bd1n2;vh!wJMSqm>P^VQUDl^K1M-ub z%01ou3j`$u<{^+krb8ehYf6H1M9{S$Y&rXJj?OIqP@xME$wN+X>XFk3)r+#T(fsym z+<5JGc^v%g9CRP>pVa&Wx^o1Eix9G|j0(|XbBd;bzAaFKe=5+|2uh$ncumRtk1Etf z_pdD<7af*2?^T1Y9D&;fCD!A)DsU10C$=mh@H*+K^DR$cgQ%kfW-5U_jMsr6r*6_a z+F>Onh7k6&;M8xrErTu`VN-$65gHWweBr;&dis-pV;<_8{SE@y4)grvST- zFvJ!C25TVgTW|md?lh%0zB%hLaMYW92cH4#|K;oxd%%3x%ZnhH*Xw{o1%f94hwlQU z=ZL)Tjbl3ij#}+FUM2Y0LL2YWjb-YPPDUJnb6){21erV^YSeE5WOY`~K4g-@OatUz z5j+-$i+cg`Lrz^~h2iB1f+WE6g%&DtfEV{#s05kbuD_mh;>|?6&c@qJ3-4|_>ud4B zWO%;^;M0;f=E)dWzYuxTrT^~Hw$WyOxdB(7&)Lp((V#I>9~87q9&MQMRqw%D$X2W5lPXi6d9@$aLvi+zx=ALV+9P eU#(W#M#LZ1SgN_qg$jmMr2Hz8pgsgb9RL6gbbo6A literal 0 HcmV?d00001 From beec5929bad4b8cebb3127c6c2f8def8c12409f2 Mon Sep 17 00:00:00 2001 From: Richard Martin-Nielsen Date: Thu, 4 Nov 2021 22:26:36 +0200 Subject: [PATCH 03/16] Add RSocrata to imports --- DESCRIPTION | 1 + 1 file changed, 1 insertion(+) diff --git a/DESCRIPTION b/DESCRIPTION index 20e44186..f1adb951 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -99,6 +99,7 @@ Imports: R6, readxl, rlang, + RSocrata, stringi, stringr, tibble, From 576085a13e2068a1551a7814ad3e76dc8c867d32 Mon Sep 17 00:00:00 2001 From: Richard Martin-Nielsen Date: Thu, 4 Nov 2021 22:47:25 +0200 Subject: [PATCH 04/16] Add import of dplyr::n --- R/Colombia.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/Colombia.R b/R/Colombia.R index 15792978..08dc853c 100644 --- a/R/Colombia.R +++ b/R/Colombia.R @@ -66,7 +66,7 @@ Colombia <- R6::R6Class("Colombia", }, #' @description Colombia specific data cleaning - #' @importFrom dplyr select mutate rename summarise group_by + #' @importFrom dplyr select mutate rename summarise group_by n #' @importFrom lubridate dmy_hms as_date #' @importFrom stringr str_replace_all str_to_sentence str_to_title #' @importFrom rlang .data From d5db53bc87ee4da5d808caf0550a5a5cfb92ad3d Mon Sep 17 00:00:00 2001 From: Richard Martin-Nielsen Date: Thu, 4 Nov 2021 22:48:31 +0200 Subject: [PATCH 05/16] Hand edit to add dplyr::n --- NAMESPACE | 1 + 1 file changed, 1 insertion(+) diff --git a/NAMESPACE b/NAMESPACE index 22eb3cbe..fa8d9b60 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -68,6 +68,7 @@ importFrom(dplyr,left_join) importFrom(dplyr,mutate) importFrom(dplyr,mutate_at) importFrom(dplyr,mutate_if) +importFrom(dplyr,n) importFrom(dplyr,na_if) importFrom(dplyr,pull) importFrom(dplyr,recode) From 26a19d070d71f732ceacb91ff20d40e33bb52fd6 Mon Sep 17 00:00:00 2001 From: Richard Martin-Nielsen Date: Tue, 9 Nov 2021 20:09:39 +0200 Subject: [PATCH 06/16] Shift to make RSocrata recommended but not required --- DESCRIPTION | 2 +- NAMESPACE | 1 - R/Colombia.R | 18 ++++++++++++++++-- .../testthat/custom_data/Colombia_level_1.rds | Bin 800 -> 46 bytes .../testthat/custom_data/Colombia_level_2.rds | Bin 800 -> 46 bytes 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index f1adb951..a07e1f53 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -99,7 +99,6 @@ Imports: R6, readxl, rlang, - RSocrata, stringi, stringr, tibble, @@ -114,6 +113,7 @@ Suggests: knitr, mockery, pkgdown, + RSocrata, rmarkdown, rvest, rworldmap, diff --git a/NAMESPACE b/NAMESPACE index fa8d9b60..891415c5 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -44,7 +44,6 @@ export(test_download) export(test_processing) export(test_return) importFrom(R6,R6Class) -importFrom(RSocrata,read.socrata) importFrom(countrycode,countrycode) importFrom(countrycode,countryname) importFrom(dplyr,"%>%") diff --git a/R/Colombia.R b/R/Colombia.R index 08dc853c..e34266b1 100644 --- a/R/Colombia.R +++ b/R/Colombia.R @@ -58,11 +58,25 @@ Colombia <- R6::R6Class("Colombia", }, #' @description Colombia specific download using Socrata API - #' @importFrom RSocrata read.socrata + #' @importFrom dplyr select download = function () { message_verbose(self$verbose, "Downloading Colombia data. This may take a while.") - self$data$raw$main <- read.socrata(self$data_urls[["main"]]) + # RSocrata package is recommended but not required + if (require("RSocrata", attach.required = TRUE)) { + self$data$raw$main <- RSocrata::read.socrata(self$data_urls[["main"]]) + } else { + # If the RSocrata package is not available, we download the full wide + # csv (which is at least 8x larger) then select down to what we could + # get through the API. + #truncated_url <- sub("\\?.*", "", self$data_urls[["main"]]) + alternate_url <- "https://www.datos.gov.co/api/views/gt2j-8ykr/rows.csv?accessType=DOWNLOAD" + massive_co_data <- + csv_reader(alternate_url, + self$verbose) + self$data$raw$main <- massive_co_data %>% + select(.data$fecha_diagnostico, .data$ciudad-municipio) + } }, #' @description Colombia specific data cleaning diff --git a/tests/testthat/custom_data/Colombia_level_1.rds b/tests/testthat/custom_data/Colombia_level_1.rds index 72c9db9b1f25cd3851b1372a3661e716164c913f..70e66ce7e53dbd6f0c9e82fb9618ef4b90f0b617 100644 GIT binary patch literal 46 xcmb2|=3oE==I#ec2?+^l35h8w32CfGk`d0%cS>{{coGHp83dj>EszH)0{|6-3&VLU`iL*nt#4V1QI4!ciF@kO_W62qHvA6Plu_imvL~ zZZ)maKbz4<5vE^PG|jt9lG|7`p>n%HyF_(eps@}NK4|>e;Nz^JF{A!FFn;nxv%y32 zF=#&4U?(Oe&>Ehouh2y90{;EkuZ<`p-b4~3bd1n2;vh!wJMSqm>P^VQUDl^K1M-ub z%01ou3j`$u<{^+krb8ehYf6H1M9{S$Y&rXJj?OIqP@xME$wN+X>XFk3)r+#T(fsym z+<5JGc^v%g9CRP>pVa&Wx^o1Eix9G|j0(|XbBd;bzAaFKe=5+|2uh$ncumRtk1Etf z_pdD<7af*2?^T1Y9D&;fCD!A)DsU10C$=mh@H*+K^DR$cgQ%kfW-5U_jMsr6r*6_a z+F>Onh7k6&;M8xrErTu`VN-$65gHWweBr;&dis-pV;<_8{SE@y4)grvST- zFvJ!C25TVgTW|md?lh%0zB%hLaMYW92cH4#|K;oxd%%3x%ZnhH*Xw{o1%f94hwlQU z=ZL)Tjbl3ij#}+FUM2Y0LL2YWjb-YPPDUJnb6){21erV^YSeE5WOY`~K4g-@OatUz z5j+-$i+cg`Lrz^~h2iB1f+WE6g%&DtfEV{#s05kbuD_mh;>|?6&c@qJ3-4|_>ud4B zWO%;^;M0;f=E)dWzYuxTrT^~Hw$WyOxdB(7&)Lp((V#I>9~87q9&MQMRqw%D$X2W5lPXi6d9@$aLvi+zx=ALV+9P eU#(W#M#LZ1SgN_qg$jmMr2Hz8pgsgb9RL6gbbo6A diff --git a/tests/testthat/custom_data/Colombia_level_2.rds b/tests/testthat/custom_data/Colombia_level_2.rds index 72c9db9b1f25cd3851b1372a3661e716164c913f..70e66ce7e53dbd6f0c9e82fb9618ef4b90f0b617 100644 GIT binary patch literal 46 xcmb2|=3oE==I#ec2?+^l35h8w32CfGk`d0%cS>{{coGHp83dj>EszH)0{|6-3&VLU`iL*nt#4V1QI4!ciF@kO_W62qHvA6Plu_imvL~ zZZ)maKbz4<5vE^PG|jt9lG|7`p>n%HyF_(eps@}NK4|>e;Nz^JF{A!FFn;nxv%y32 zF=#&4U?(Oe&>Ehouh2y90{;EkuZ<`p-b4~3bd1n2;vh!wJMSqm>P^VQUDl^K1M-ub z%01ou3j`$u<{^+krb8ehYf6H1M9{S$Y&rXJj?OIqP@xME$wN+X>XFk3)r+#T(fsym z+<5JGc^v%g9CRP>pVa&Wx^o1Eix9G|j0(|XbBd;bzAaFKe=5+|2uh$ncumRtk1Etf z_pdD<7af*2?^T1Y9D&;fCD!A)DsU10C$=mh@H*+K^DR$cgQ%kfW-5U_jMsr6r*6_a z+F>Onh7k6&;M8xrErTu`VN-$65gHWweBr;&dis-pV;<_8{SE@y4)grvST- zFvJ!C25TVgTW|md?lh%0zB%hLaMYW92cH4#|K;oxd%%3x%ZnhH*Xw{o1%f94hwlQU z=ZL)Tjbl3ij#}+FUM2Y0LL2YWjb-YPPDUJnb6){21erV^YSeE5WOY`~K4g-@OatUz z5j+-$i+cg`Lrz^~h2iB1f+WE6g%&DtfEV{#s05kbuD_mh;>|?6&c@qJ3-4|_>ud4B zWO%;^;M0;f=E)dWzYuxTrT^~Hw$WyOxdB(7&)Lp((V#I>9~87q9&MQMRqw%D$X2W5lPXi6d9@$aLvi+zx=ALV+9P eU#(W#M#LZ1SgN_qg$jmMr2Hz8pgsgb9RL6gbbo6A From 6828efd1143d65d7fc6b5c09dbe185a0535733cc Mon Sep 17 00:00:00 2001 From: Richard Martin-Nielsen Date: Sat, 20 Nov 2021 18:51:21 +0200 Subject: [PATCH 07/16] Revert "Shift to make RSocrata recommended but not required" This reverts commit 26a19d070d71f732ceacb91ff20d40e33bb52fd6. --- DESCRIPTION | 2 +- NAMESPACE | 1 + R/Colombia.R | 18 ++---------------- .../testthat/custom_data/Colombia_level_1.rds | Bin 46 -> 800 bytes .../testthat/custom_data/Colombia_level_2.rds | Bin 46 -> 800 bytes 5 files changed, 4 insertions(+), 17 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index a07e1f53..f1adb951 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -99,6 +99,7 @@ Imports: R6, readxl, rlang, + RSocrata, stringi, stringr, tibble, @@ -113,7 +114,6 @@ Suggests: knitr, mockery, pkgdown, - RSocrata, rmarkdown, rvest, rworldmap, diff --git a/NAMESPACE b/NAMESPACE index 891415c5..fa8d9b60 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -44,6 +44,7 @@ export(test_download) export(test_processing) export(test_return) importFrom(R6,R6Class) +importFrom(RSocrata,read.socrata) importFrom(countrycode,countrycode) importFrom(countrycode,countryname) importFrom(dplyr,"%>%") diff --git a/R/Colombia.R b/R/Colombia.R index e34266b1..08dc853c 100644 --- a/R/Colombia.R +++ b/R/Colombia.R @@ -58,25 +58,11 @@ Colombia <- R6::R6Class("Colombia", }, #' @description Colombia specific download using Socrata API - #' @importFrom dplyr select + #' @importFrom RSocrata read.socrata download = function () { message_verbose(self$verbose, "Downloading Colombia data. This may take a while.") - # RSocrata package is recommended but not required - if (require("RSocrata", attach.required = TRUE)) { - self$data$raw$main <- RSocrata::read.socrata(self$data_urls[["main"]]) - } else { - # If the RSocrata package is not available, we download the full wide - # csv (which is at least 8x larger) then select down to what we could - # get through the API. - #truncated_url <- sub("\\?.*", "", self$data_urls[["main"]]) - alternate_url <- "https://www.datos.gov.co/api/views/gt2j-8ykr/rows.csv?accessType=DOWNLOAD" - massive_co_data <- - csv_reader(alternate_url, - self$verbose) - self$data$raw$main <- massive_co_data %>% - select(.data$fecha_diagnostico, .data$ciudad-municipio) - } + self$data$raw$main <- read.socrata(self$data_urls[["main"]]) }, #' @description Colombia specific data cleaning diff --git a/tests/testthat/custom_data/Colombia_level_1.rds b/tests/testthat/custom_data/Colombia_level_1.rds index 70e66ce7e53dbd6f0c9e82fb9618ef4b90f0b617..72c9db9b1f25cd3851b1372a3661e716164c913f 100644 GIT binary patch literal 800 zcmV+*1K<1~iwFP!000001MOK&XcIvcew!a51!0?}f+zJNVln#@+oVAcD)u0Pq*~A@ zly#Hpf=Q%l5pP};J*XfER=jxdWJEmaT|5bb(kR}n;8og7iylm8GTEfN*%zH<(zHeB z*EjRNnfEjQVbAsfKoCNb1i>&VLU`iL*nt#4V1QI4!ciF@kO_W62qHvA6Plu_imvL~ zZZ)maKbz4<5vE^PG|jt9lG|7`p>n%HyF_(eps@}NK4|>e;Nz^JF{A!FFn;nxv%y32 zF=#&4U?(Oe&>Ehouh2y90{;EkuZ<`p-b4~3bd1n2;vh!wJMSqm>P^VQUDl^K1M-ub z%01ou3j`$u<{^+krb8ehYf6H1M9{S$Y&rXJj?OIqP@xME$wN+X>XFk3)r+#T(fsym z+<5JGc^v%g9CRP>pVa&Wx^o1Eix9G|j0(|XbBd;bzAaFKe=5+|2uh$ncumRtk1Etf z_pdD<7af*2?^T1Y9D&;fCD!A)DsU10C$=mh@H*+K^DR$cgQ%kfW-5U_jMsr6r*6_a z+F>Onh7k6&;M8xrErTu`VN-$65gHWweBr;&dis-pV;<_8{SE@y4)grvST- zFvJ!C25TVgTW|md?lh%0zB%hLaMYW92cH4#|K;oxd%%3x%ZnhH*Xw{o1%f94hwlQU z=ZL)Tjbl3ij#}+FUM2Y0LL2YWjb-YPPDUJnb6){21erV^YSeE5WOY`~K4g-@OatUz z5j+-$i+cg`Lrz^~h2iB1f+WE6g%&DtfEV{#s05kbuD_mh;>|?6&c@qJ3-4|_>ud4B zWO%;^;M0;f=E)dWzYuxTrT^~Hw$WyOxdB(7&)Lp((V#I>9~87q9&MQMRqw%D$X2W5lPXi6d9@$aLvi+zx=ALV+9P eU#(W#M#LZ1SgN_qg$jmMr2Hz8pgsgb9RL6gbbo6A literal 46 xcmb2|=3oE==I#ec2?+^l35h8w32CfGk`d0%cS>{{coGHp83dj>EszH)0{|6-3&VLU`iL*nt#4V1QI4!ciF@kO_W62qHvA6Plu_imvL~ zZZ)maKbz4<5vE^PG|jt9lG|7`p>n%HyF_(eps@}NK4|>e;Nz^JF{A!FFn;nxv%y32 zF=#&4U?(Oe&>Ehouh2y90{;EkuZ<`p-b4~3bd1n2;vh!wJMSqm>P^VQUDl^K1M-ub z%01ou3j`$u<{^+krb8ehYf6H1M9{S$Y&rXJj?OIqP@xME$wN+X>XFk3)r+#T(fsym z+<5JGc^v%g9CRP>pVa&Wx^o1Eix9G|j0(|XbBd;bzAaFKe=5+|2uh$ncumRtk1Etf z_pdD<7af*2?^T1Y9D&;fCD!A)DsU10C$=mh@H*+K^DR$cgQ%kfW-5U_jMsr6r*6_a z+F>Onh7k6&;M8xrErTu`VN-$65gHWweBr;&dis-pV;<_8{SE@y4)grvST- zFvJ!C25TVgTW|md?lh%0zB%hLaMYW92cH4#|K;oxd%%3x%ZnhH*Xw{o1%f94hwlQU z=ZL)Tjbl3ij#}+FUM2Y0LL2YWjb-YPPDUJnb6){21erV^YSeE5WOY`~K4g-@OatUz z5j+-$i+cg`Lrz^~h2iB1f+WE6g%&DtfEV{#s05kbuD_mh;>|?6&c@qJ3-4|_>ud4B zWO%;^;M0;f=E)dWzYuxTrT^~Hw$WyOxdB(7&)Lp((V#I>9~87q9&MQMRqw%D$X2W5lPXi6d9@$aLvi+zx=ALV+9P eU#(W#M#LZ1SgN_qg$jmMr2Hz8pgsgb9RL6gbbo6A literal 46 xcmb2|=3oE==I#ec2?+^l35h8w32CfGk`d0%cS>{{coGHp83dj>EszH)0{|6-3 Date: Sat, 20 Nov 2021 20:22:58 +0200 Subject: [PATCH 08/16] Apply require method for using RSocrata package to allow it to be suggested in DESCRIPTION --- DESCRIPTION | 2 +- NAMESPACE | 1 - R/Colombia.R | 26 ++++++++++++++---- man/reexports.Rd | 2 +- .../testthat/custom_data/Colombia_level_1.rds | Bin 800 -> 848 bytes .../testthat/custom_data/Colombia_level_2.rds | Bin 800 -> 848 bytes 6 files changed, 22 insertions(+), 9 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index f1adb951..126689af 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -99,7 +99,6 @@ Imports: R6, readxl, rlang, - RSocrata, stringi, stringr, tibble, @@ -115,6 +114,7 @@ Suggests: mockery, pkgdown, rmarkdown, + RSocrata, rvest, rworldmap, sf, diff --git a/NAMESPACE b/NAMESPACE index fa8d9b60..891415c5 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -44,7 +44,6 @@ export(test_download) export(test_processing) export(test_return) importFrom(R6,R6Class) -importFrom(RSocrata,read.socrata) importFrom(countrycode,countrycode) importFrom(countrycode,countryname) importFrom(dplyr,"%>%") diff --git a/R/Colombia.R b/R/Colombia.R index 08dc853c..1c9a9159 100644 --- a/R/Colombia.R +++ b/R/Colombia.R @@ -58,11 +58,25 @@ Colombia <- R6::R6Class("Colombia", }, #' @description Colombia specific download using Socrata API - #' @importFrom RSocrata read.socrata - download = function () { + #' @importFrom dplyr select + download = function() { message_verbose(self$verbose, "Downloading Colombia data. This may take a while.") - self$data$raw$main <- read.socrata(self$data_urls[["main"]]) + # RSocrata package is recommended but not required + if (require(RSocrata, attach.required = TRUE)) { + self$data$raw$main <- RSocrata::read.socrata(self$data_urls[["main"]]) + } else { + # If the RSocrata package is not available, we download the full wide + # csv (which is at least 8x larger) then select down to what we could + # get through the API. + alternate_url <- "https://www.datos.gov.co/api/views/gt2j-8ykr/rows.csv?accessType=DOWNLOAD" # nolint + massive_co_data <- + csv_reader(alternate_url, + self$verbose) + self$data$raw$main <- massive_co_data %>% + select(fecha_diagnostico = .data$`Fecha de diagn\\00f3stico`, + ciudad_municipio = .data$`C\\00f3digo DIVIPOLA municipio`) + } }, #' @description Colombia specific data cleaning @@ -80,19 +94,19 @@ Colombia <- R6::R6Class("Colombia", group_by(date, level_2_region_code) %>% summarise(cases_new = n(), .groups = "drop") %>% mutate(date = as_date(dmy_hms(date)), - level_2_region_code=sprintf("%05d", level_2_region_code)) %>% + level_2_region_code = sprintf("%05d", level_2_region_code)) %>% left_join( self$codes_lookup$`2`, by = c("level_2_region_code" = "level_2_region_code") ) }, - + #' @description Colombia Specific Department Level Data Cleaning #' #' Aggregates data to the level 1 (department) regional level. Data is #' provided by the source at the level 2 (municipality) regional level. #' - #' @importFrom dplyr group_by summarise ungroup full_join across if_else select + #' @importFrom dplyr group_by summarise ungroup across select #' @importFrom tidyselect vars_select_helpers clean_level_1 = function() { self$data$clean <- self$data$clean %>% diff --git a/man/reexports.Rd b/man/reexports.Rd index 3b0d9eb6..eeaa1efc 100644 --- a/man/reexports.Rd +++ b/man/reexports.Rd @@ -11,6 +11,6 @@ These objects are imported from other packages. Follow the links below to see their documentation. \describe{ - \item{rlang}{\code{\link[rlang:tidyeval-data]{.data}}} + \item{rlang}{\code{\link[rlang:dot-data]{.data}}} }} diff --git a/tests/testthat/custom_data/Colombia_level_1.rds b/tests/testthat/custom_data/Colombia_level_1.rds index 72c9db9b1f25cd3851b1372a3661e716164c913f..4893c7fb1cf348c12aa320921835b48bc91c0cf4 100644 GIT binary patch literal 848 zcmV-W1F!raiwFP!000001MOO0PunmMciX@Q(neXuA5EK-53tde{bPIDG(f5}4K!fd zTje@#v6RG7;)p%$fv>X%p7;pWz7!91m)1@pqil_`Bt?-Lo$a6Re0M(kE>*rQB7`bP zE0s}Y4w`80=y3P>7DDA3bV`5)v~7yROYamFVetF%g-(P8?}j*Zr~nD4NWZmb7$UW0p5x*0=JS7n5~$I(O(Thcww& z$vB3l^Oxx@F%`!-Nh%%d3Y|W56J93KJ8yb-#=1bKsR0ps2+zg)Uq4QPqJkE*pam^x zK?^#&6d^76bfP3P|D262>Y>rM6lGOgbSXK;ZG+*S%{{>gmq3*;-@r!O@@+<#!+1p6 zg3C`fl*9*t#9+`PNCgNSuC!cCJB!QD1k>0%ju>c_8?`R1|zGx!>KT6bHTcdV8Z(6 zwnU$P?4KK~$Mx;j*Vg{trw=gE!LEP|XbY8%YoEE*ap`qv#Q*pY{&C8d{*uhmacu_@ zylk%@*$jGtk`^_f8MNpa*AD3SP~IVP_|Qgf3*2K$liE>7*#@XNa)HeEJD$LXnz*7= zZXN6mXF9ll=1H&`nySX7U%yb|JJcPEc@p}S1%?e(^7?1s8Vf6~rErerQ`jh_K{!0D zeER33(kHrKu3Yl!eyu3$Zvt!k!6G)b3B!8-rvSaMgx0Uv)pLE2F~a#j1nbf`SbIM8 zya|Ci&VLU`iL*nt#4V1QI4!ciF@kO_W62qHvA6Plu_imvL~ zZZ)maKbz4<5vE^PG|jt9lG|7`p>n%HyF_(eps@}NK4|>e;Nz^JF{A!FFn;nxv%y32 zF=#&4U?(Oe&>Ehouh2y90{;EkuZ<`p-b4~3bd1n2;vh!wJMSqm>P^VQUDl^K1M-ub z%01ou3j`$u<{^+krb8ehYf6H1M9{S$Y&rXJj?OIqP@xME$wN+X>XFk3)r+#T(fsym z+<5JGc^v%g9CRP>pVa&Wx^o1Eix9G|j0(|XbBd;bzAaFKe=5+|2uh$ncumRtk1Etf z_pdD<7af*2?^T1Y9D&;fCD!A)DsU10C$=mh@H*+K^DR$cgQ%kfW-5U_jMsr6r*6_a z+F>Onh7k6&;M8xrErTu`VN-$65gHWweBr;&dis-pV;<_8{SE@y4)grvST- zFvJ!C25TVgTW|md?lh%0zB%hLaMYW92cH4#|K;oxd%%3x%ZnhH*Xw{o1%f94hwlQU z=ZL)Tjbl3ij#}+FUM2Y0LL2YWjb-YPPDUJnb6){21erV^YSeE5WOY`~K4g-@OatUz z5j+-$i+cg`Lrz^~h2iB1f+WE6g%&DtfEV{#s05kbuD_mh;>|?6&c@qJ3-4|_>ud4B zWO%;^;M0;f=E)dWzYuxTrT^~Hw$WyOxdB(7&)Lp((V#I>9~87q9&MQMRqw%D$X2W5lPXi6d9@$aLvi+zx=ALV+9P eU#(W#M#LZ1SgN_qg$jmMr2Hz8pgsgb9RL6gbbo6A diff --git a/tests/testthat/custom_data/Colombia_level_2.rds b/tests/testthat/custom_data/Colombia_level_2.rds index 72c9db9b1f25cd3851b1372a3661e716164c913f..4893c7fb1cf348c12aa320921835b48bc91c0cf4 100644 GIT binary patch literal 848 zcmV-W1F!raiwFP!000001MOO0PunmMciX@Q(neXuA5EK-53tde{bPIDG(f5}4K!fd zTje@#v6RG7;)p%$fv>X%p7;pWz7!91m)1@pqil_`Bt?-Lo$a6Re0M(kE>*rQB7`bP zE0s}Y4w`80=y3P>7DDA3bV`5)v~7yROYamFVetF%g-(P8?}j*Zr~nD4NWZmb7$UW0p5x*0=JS7n5~$I(O(Thcww& z$vB3l^Oxx@F%`!-Nh%%d3Y|W56J93KJ8yb-#=1bKsR0ps2+zg)Uq4QPqJkE*pam^x zK?^#&6d^76bfP3P|D262>Y>rM6lGOgbSXK;ZG+*S%{{>gmq3*;-@r!O@@+<#!+1p6 zg3C`fl*9*t#9+`PNCgNSuC!cCJB!QD1k>0%ju>c_8?`R1|zGx!>KT6bHTcdV8Z(6 zwnU$P?4KK~$Mx;j*Vg{trw=gE!LEP|XbY8%YoEE*ap`qv#Q*pY{&C8d{*uhmacu_@ zylk%@*$jGtk`^_f8MNpa*AD3SP~IVP_|Qgf3*2K$liE>7*#@XNa)HeEJD$LXnz*7= zZXN6mXF9ll=1H&`nySX7U%yb|JJcPEc@p}S1%?e(^7?1s8Vf6~rErerQ`jh_K{!0D zeER33(kHrKu3Yl!eyu3$Zvt!k!6G)b3B!8-rvSaMgx0Uv)pLE2F~a#j1nbf`SbIM8 zya|Ci&VLU`iL*nt#4V1QI4!ciF@kO_W62qHvA6Plu_imvL~ zZZ)maKbz4<5vE^PG|jt9lG|7`p>n%HyF_(eps@}NK4|>e;Nz^JF{A!FFn;nxv%y32 zF=#&4U?(Oe&>Ehouh2y90{;EkuZ<`p-b4~3bd1n2;vh!wJMSqm>P^VQUDl^K1M-ub z%01ou3j`$u<{^+krb8ehYf6H1M9{S$Y&rXJj?OIqP@xME$wN+X>XFk3)r+#T(fsym z+<5JGc^v%g9CRP>pVa&Wx^o1Eix9G|j0(|XbBd;bzAaFKe=5+|2uh$ncumRtk1Etf z_pdD<7af*2?^T1Y9D&;fCD!A)DsU10C$=mh@H*+K^DR$cgQ%kfW-5U_jMsr6r*6_a z+F>Onh7k6&;M8xrErTu`VN-$65gHWweBr;&dis-pV;<_8{SE@y4)grvST- zFvJ!C25TVgTW|md?lh%0zB%hLaMYW92cH4#|K;oxd%%3x%ZnhH*Xw{o1%f94hwlQU z=ZL)Tjbl3ij#}+FUM2Y0LL2YWjb-YPPDUJnb6){21erV^YSeE5WOY`~K4g-@OatUz z5j+-$i+cg`Lrz^~h2iB1f+WE6g%&DtfEV{#s05kbuD_mh;>|?6&c@qJ3-4|_>ud4B zWO%;^;M0;f=E)dWzYuxTrT^~Hw$WyOxdB(7&)Lp((V#I>9~87q9&MQMRqw%D$X2W5lPXi6d9@$aLvi+zx=ALV+9P eU#(W#M#LZ1SgN_qg$jmMr2Hz8pgsgb9RL6gbbo6A From 7f84ec8be2b8731855a460ce2ce929b5cf1f8383 Mon Sep 17 00:00:00 2001 From: Richard Martin-Nielsen Date: Sat, 20 Nov 2021 20:27:06 +0200 Subject: [PATCH 09/16] Document specific download function for Colombia, amend WORDLIST --- R/Colombia.R | 3 ++- inst/WORDLIST | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/R/Colombia.R b/R/Colombia.R index 1c9a9159..1246c7e9 100644 --- a/R/Colombia.R +++ b/R/Colombia.R @@ -4,7 +4,6 @@ #' # nolint start #' @source \url{https://www.datos.gov.co/Salud-y-Protecci-n-Social/Casos-positivos-de-COVID-19-en-Colombia/gt2j-8ykr} -#' @source \url{https://github.com/danielcs88/colombia_covid-19/} # nolint end #' @export #' @concept dataset @@ -58,6 +57,8 @@ Colombia <- R6::R6Class("Colombia", }, #' @description Colombia specific download using Socrata API + #' This uses the `RSocrata` package if it is installed or downloads + #' a much larger csv file if that package is not available. #' @importFrom dplyr select download = function() { message_verbose(self$verbose, diff --git a/inst/WORDLIST b/inst/WORDLIST index e3fb521e..d197220c 100644 --- a/inst/WORDLIST +++ b/inst/WORDLIST @@ -131,6 +131,7 @@ rlang rmarkdown Roxygen RoxygenNote +RSocrata rvest RVIM rworldmap @@ -143,6 +144,7 @@ seperate shapefiles sherratt Sherratt +Socrata sophie SouthAfrica spi From 3063942a49bd010258e8df5fea71c192f01a3275 Mon Sep 17 00:00:00 2001 From: Richard Martin-Nielsen Date: Sun, 28 Nov 2021 20:53:52 +0200 Subject: [PATCH 10/16] Document changes to Colombia data. --- NEWS.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index efcbe4cf..a56f69d6 100644 --- a/NEWS.md +++ b/NEWS.md @@ -5,7 +5,8 @@ This release is currently under development ## New data sets * Support for level 1 region data in Estonia (thanks to @RichardMN). See `?Estonia` for details. -* Support for level 1 region data in Vietnam (thanks to @biocyberman). See `?Vietname` for details. +* Support for level 1 region data in Vietnam (thanks to @biocyberman). See `?Vietnam` for details. +* Support for level 2 region data in Colombia has been added (thanks to @RichardMN). The package no longer relies on aggregation by another project but takes data direct from the Colombia open data API. This uses the `RSocrata` package, which is suggested but not required. Using the `RSocrata` package cuts download volume and time by a factor of about 8. ## Other changes From e14e767824b268aaa02291ff663e89e7d57ef5d8 Mon Sep 17 00:00:00 2001 From: Richard Martin-Nielsen Date: Sun, 28 Nov 2021 22:48:40 +0200 Subject: [PATCH 11/16] Manual edit of reexports.Rd to get around CMD check fail --- man/reexports.Rd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/man/reexports.Rd b/man/reexports.Rd index eeaa1efc..3b0d9eb6 100644 --- a/man/reexports.Rd +++ b/man/reexports.Rd @@ -11,6 +11,6 @@ These objects are imported from other packages. Follow the links below to see their documentation. \describe{ - \item{rlang}{\code{\link[rlang:dot-data]{.data}}} + \item{rlang}{\code{\link[rlang:tidyeval-data]{.data}}} }} From c2de6c8271c4d91878cafcb7a326579ed3fba962 Mon Sep 17 00:00:00 2001 From: Richard Martin-Nielsen Date: Wed, 1 Dec 2021 19:27:29 +0200 Subject: [PATCH 12/16] Replace require with requireNamespace in Colombia.R --- R/Colombia.R | 2 +- inst/WORDLIST | 1 + man/Colombia.Rd | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/R/Colombia.R b/R/Colombia.R index 1246c7e9..f5c9fcc2 100644 --- a/R/Colombia.R +++ b/R/Colombia.R @@ -64,7 +64,7 @@ Colombia <- R6::R6Class("Colombia", message_verbose(self$verbose, "Downloading Colombia data. This may take a while.") # RSocrata package is recommended but not required - if (require(RSocrata, attach.required = TRUE)) { + if (requireNamespace(RSocrata, quietly = self$verbose)) { self$data$raw$main <- RSocrata::read.socrata(self$data_urls[["main"]]) } else { # If the RSocrata package is not available, we download the full wide diff --git a/inst/WORDLIST b/inst/WORDLIST index d197220c..1c0d49b7 100644 --- a/inst/WORDLIST +++ b/inst/WORDLIST @@ -30,6 +30,7 @@ COVID covidregionaldata cre CSSE +csv ctb currrently DataClass diff --git a/man/Colombia.Rd b/man/Colombia.Rd index 8fbbdf6d..f8228ff5 100644 --- a/man/Colombia.Rd +++ b/man/Colombia.Rd @@ -5,8 +5,6 @@ \title{Colombia Class for downloading, cleaning and processing notification data} \source{ \url{https://www.datos.gov.co/Salud-y-Protecci-n-Social/Casos-positivos-de-COVID-19-en-Colombia/gt2j-8ykr} - -\url{https://github.com/danielcs88/colombia_covid-19/} } \description{ Information for downloading, cleaning @@ -109,6 +107,8 @@ Set up a table of region codes for clean data \if{latex}{\out{\hypertarget{method-download}{}}} \subsection{Method \code{download()}}{ Colombia specific download using Socrata API +This uses the \code{RSocrata} package if it is installed or downloads +a much larger csv file if that package is not available. \subsection{Usage}{ \if{html}{\out{
}}\preformatted{Colombia$download()}\if{html}{\out{
}} } From 3e2f8733de4466449555e438baaf11184b200353 Mon Sep 17 00:00:00 2001 From: Richard Martin-Nielsen Date: Fri, 3 Dec 2021 21:01:34 +0200 Subject: [PATCH 13/16] Remove work-around for when RSocrata package is not installed --- R/Colombia.R | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/R/Colombia.R b/R/Colombia.R index f5c9fcc2..39c9c145 100644 --- a/R/Colombia.R +++ b/R/Colombia.R @@ -64,19 +64,11 @@ Colombia <- R6::R6Class("Colombia", message_verbose(self$verbose, "Downloading Colombia data. This may take a while.") # RSocrata package is recommended but not required - if (requireNamespace(RSocrata, quietly = self$verbose)) { + if (requireNamespace("RSocrata", quietly = self$verbose)) { self$data$raw$main <- RSocrata::read.socrata(self$data_urls[["main"]]) } else { - # If the RSocrata package is not available, we download the full wide - # csv (which is at least 8x larger) then select down to what we could - # get through the API. - alternate_url <- "https://www.datos.gov.co/api/views/gt2j-8ykr/rows.csv?accessType=DOWNLOAD" # nolint - massive_co_data <- - csv_reader(alternate_url, - self$verbose) - self$data$raw$main <- massive_co_data %>% - select(fecha_diagnostico = .data$`Fecha de diagn\\00f3stico`, - ciudad_municipio = .data$`C\\00f3digo DIVIPOLA municipio`) + stop("covidregionaldata::Colombia$download - requires RSocrata package.\n", + "Please run install.packages(\"RSocrata\")\n", call.=TRUE) } }, From 190ab71b1e13d0dbfa331558644ec11d2f701dae Mon Sep 17 00:00:00 2001 From: Richard Martin-Nielsen Date: Fri, 4 Feb 2022 21:20:43 +0200 Subject: [PATCH 14/16] Squashed commit of the following: commit 14e112c23d49ad94699627f3baaff11731a2221f Author: Sam Abbott Date: Fri Feb 4 15:50:18 2022 +0000 add github to vscode tools for dev environmenth commit a851c753dd3e0ce58b5043497afd27d5503eeb46 Author: Sam Abbott Date: Fri Feb 4 15:43:07 2022 +0000 switch to preferably template for website --- .devcontainer/devcontainer.json | 3 +- .github/workflows/pkgdown.yaml | 53 +++++++++++++++++++++++++++++++++ .pre-commit-config.yaml | 4 +-- DESCRIPTION | 4 ++- NEWS.md | 1 + 5 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/pkgdown.yaml diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 6717a1de..66b4b139 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -21,7 +21,8 @@ "shan.code-settings-sync", "searking.preview-vscode", "tht13.html-preview-vscode", - "formulahendry.code-runner" + "formulahendry.code-runner", + "github.vscode-pull-request-github" ], // Use 'forwardPorts' to make a list of ports inside the container available locally. diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml new file mode 100644 index 00000000..8d695bc1 --- /dev/null +++ b/.github/workflows/pkgdown.yaml @@ -0,0 +1,53 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/master/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +on: + push: + branches: [main, master] + tags: ['*'] + +name: pkgdown + +jobs: + pkgdown: + runs-on: macOS-latest + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: n1hility/cancel-previous-runs@v2 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - uses: actions/checkout@v2 + - uses: r-lib/actions/setup-pandoc@v1 + - 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: Restore R package cache + 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", "curl")) + remotes::install_deps(dependencies = TRUE) + remotes::install_github("r-lib/pkgdown") + remotes::install_github("amirmasoudabdol/preferably", type = "source") + shell: Rscript {0} + + - name: Install package + run: R CMD INSTALL . + + - name: Deploy package + run: | + git config --local user.name "$GITHUB_ACTOR" + git config --local user.email "$GITHUB_ACTOR@users.noreply.github.com" + Rscript -e 'pkgdown::deploy_to_branch(new_process = FALSE)' diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 008fa328..f35a2100 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,7 +2,7 @@ # R specific hooks: https://github.com/lorenzwalthert/precommit repos: - repo: https://github.com/lorenzwalthert/precommit - rev: v0.1.3.9014 + rev: v0.2.2.9009 hooks: - id: style-files args: [--style_pkg=styler, --style_fun=tidyverse_style] @@ -45,7 +45,7 @@ repos: - id: no-browser-statement - id: deps-in-desc - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.0.1 + rev: v4.1.0 hooks: - id: check-added-large-files args: ['--maxkb=800'] diff --git a/DESCRIPTION b/DESCRIPTION index 91b47f8e..2acdb0e3 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -107,7 +107,6 @@ Suggests: ggspatial, knitr, mockery, - pkgdown, rmarkdown, RSocrata, rvest, @@ -119,6 +118,9 @@ Suggests: VignetteBuilder: knitr Config/testthat/edition: 3 +Config/Needs/website: + r-lib/pkgdown, + amirmasoudabdol/preferably Encoding: UTF-8 Language: en-gb LazyData: true diff --git a/NEWS.md b/NEWS.md index 4a270315..16faffd2 100644 --- a/NEWS.md +++ b/NEWS.md @@ -12,6 +12,7 @@ This release is currently under development * Change the data source for Switzerland to draw data from the Swiss Federal Office of Public Health (FOPH) * Updated the package logo to include the newly supported data sets. * Reduced the number of package dependencies (@bisaloo and @RichardMN) + ## Bug fixes - Fixed a bug in the data sourced from Germany so that instead of treating it as a line list of individuals it is treated as a relatively finely resolved count data which needs to be summed up (by @sbfnk). From b607e1fed644d0ce87a84e928bee369fad54016d Mon Sep 17 00:00:00 2001 From: Richard Martin-Nielsen Date: Fri, 4 Feb 2022 21:43:40 +0200 Subject: [PATCH 15/16] Vietnam fix added --- DESCRIPTION | 2 ++ NAMESPACE | 5 +++-- R/Vietnam.R | 43 ++++++++++++++++++++++---------------- data/all_country_data.rda | Bin 3031 -> 3077 bytes 4 files changed, 30 insertions(+), 20 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 2acdb0e3..7d275b8d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -98,8 +98,10 @@ Imports: R6, readxl, rlang, + stringi, stringr, tidyr (>= 1.0.0), + tidyselect, vroom, xml2 Suggests: diff --git a/NAMESPACE b/NAMESPACE index 6791edbb..0878538c 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -118,12 +118,12 @@ importFrom(rlang,"!!") importFrom(rlang,":=") importFrom(rlang,.data) importFrom(rlang,syms) -importFrom(stringr,str_conv) +importFrom(stringi,stri_trans_general) +importFrom(stringi,stri_trim_both) importFrom(stringr,str_detect) importFrom(stringr,str_replace_all) importFrom(stringr,str_to_sentence) importFrom(stringr,str_to_title) -importFrom(stringr,str_trim) importFrom(tidyr,complete) importFrom(tidyr,drop_na) importFrom(tidyr,fill) @@ -133,6 +133,7 @@ importFrom(tidyr,pivot_longer) importFrom(tidyr,pivot_wider) importFrom(tidyr,replace_na) importFrom(tidyr,separate) +importFrom(tidyselect,vars_select_helpers) importFrom(utils,download.file) importFrom(utils,untar) importFrom(vroom,vroom) diff --git a/R/Vietnam.R b/R/Vietnam.R index 44062df8..6f888130 100644 --- a/R/Vietnam.R +++ b/R/Vietnam.R @@ -64,7 +64,8 @@ Vietnam <- R6::R6Class("Vietnam", #' @importFrom dplyr filter select mutate rename tibble as_tibble full_join #' @importFrom tidyr replace_na drop_na separate #' @importFrom purrr map - #' @importFrom stringr str_conv str_trim str_to_title str_replace_all + #' @importFrom stringr str_to_title str_replace_all + #' @importFrom stringi stri_trans_general stri_trim_both #' @importFrom lubridate dmy clean_common = function() { # The first three elements of self$data$raw are the data @@ -80,18 +81,19 @@ Vietnam <- R6::R6Class("Vietnam", y %>% separate(date, sep = "[.]+", into = c(NA, "province", "date")) } ) - self$data$clean <- full_join( - full_join( - flat_all$case_by_time, flat_all$death_by_time, - by = c("province", "date"), - suffix = c(".cases", ".deaths"), - copy = TRUE - ), - flat_all$recovered_by_time, - by = c("province", "date"), - suffix = c("", ".recovered"), - copy = TRUE - ) %>% + index_cols <- bind_rows( + flat_all$case_by_time %>% select("date", "province"), + flat_all$death_by_time %>% select("date", "province"), + flat_all$recovered_by_time %>% select("date", "province")) %>% + unique() + + self$data$clean <- + left_join(index_cols, flat_all$case_by_time %>% rename(cases_total =value), + by = c("province", "date") ) %>% + left_join(flat_all$death_by_time %>% rename(deaths_total =value), + by = c("province", "date") ) %>% + left_join(flat_all$recovered_by_time %>% rename(recovered_total =value), + by = c("province", "date") ) %>% # The api uses integer codes for provinces which do not # line up with ISO 3166-2 (some of which are not numbers) # so we use this as a temporary code to line names up @@ -99,9 +101,14 @@ Vietnam <- R6::R6Class("Vietnam", select( ncsc_region_code = province, date, - cases_total = value.cases, - deaths_total = value.deaths, - recovered_total = value) %>% + cases_total, + deaths_total, + recovered_total + # , + # cases_total = value.cases, + # deaths_total = value.deaths, + # recovered_total = value + ) %>% mutate(ncsc_region_code = as.numeric(ncsc_region_code)) %>% left_join( self$data$raw$provinces %>% @@ -119,8 +126,8 @@ Vietnam <- R6::R6Class("Vietnam", # #tidyr::drop_na(date, region_name) %>% mutate( - level_1_region = str_conv(level_1_region, "ASCII"), - level_1_region = str_trim(level_1_region, side = "both"), + level_1_region = stri_trans_general(level_1_region, "ASCII"), + level_1_region = stri_trim_both(level_1_region), level_1_region = str_replace_all(level_1_region, "\\(.*\\)|-| ", ""), level_1_region = str_to_title(level_1_region), diff --git a/data/all_country_data.rda b/data/all_country_data.rda index 5e83bf89bf24c904cddb6dfa807d559d772bf0c9..f305e8ba06a61cf069848f719180bc6c0897113e 100644 GIT binary patch literal 3077 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 ZPW#<`EHV%=!azOZ?ntK!5)7qX-5|wgg^>UN From 500ae67dcfa0829a53fd909ba47985fd8aad9be5 Mon Sep 17 00:00:00 2001 From: Sam Abbott Date: Sat, 5 Feb 2022 20:21:54 +0000 Subject: [PATCH 16/16] update news --- NEWS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.md b/NEWS.md index 942c164e..ad8f7d6c 100644 --- a/NEWS.md +++ b/NEWS.md @@ -20,6 +20,7 @@ This release is currently under development - Fixed a bug in the data sourced from Germany so that instead of treating it as a line list of individuals it is treated as a relatively finely resolved count data which needs to be summed up (by @sbfnk). - Fixed a bug in the Vietnam class due to `stringr` ([#448](https://github.com/epiforecasts/covidregionaldata/pull/448) by @RichardMN). - Fixed a bug with the Netherlands class were the lack of Hospitalisation data in the source was causing the class to fail ([#446](https://github.com/epiforecasts/covidregionaldata/pull/446) by @RichardMN). +- Fixed an issue with the Colombia data and reduced dependencies by making `RSocrata` be a suggested package ([#433](https://github.com/epiforecasts/covidregionaldata/pull/433) by @RichardMN). ## Depreciations