@@ -163,15 +163,15 @@ print.EpidataFieldInfo <- function(x, ...) {
163163}
164164
165165# ' @importFrom stats na.omit
166- parse_value <- function (info , value , disable_date_parsing = FALSE ) {
166+ parse_value <- function (info , value , disable_date_parsing = FALSE , reference_week_day = 1 ) {
167167 stopifnot(inherits(info , " EpidataFieldInfo" ))
168168
169169 if (is.null(value )) {
170170 return (value )
171171 } else if (info $ type == " date" && ! disable_date_parsing && ! inherits(value , " Date" )) {
172172 return (parse_api_date(value ))
173173 } else if (info $ type == " epiweek" && ! disable_date_parsing && ! inherits(value , " Date" )) {
174- return (parse_api_week(value ))
174+ return (parse_api_week(value , reference_week_day = reference_week_day ))
175175 } else if (info $ type == " bool" ) {
176176 return (as.logical(value ))
177177 } else if (info $ type == " int" ) {
@@ -197,7 +197,7 @@ parse_value <- function(info, value, disable_date_parsing = FALSE) {
197197}
198198
199199# ' @importFrom purrr map_chr
200- parse_data_frame <- function (epidata_call , df , disable_date_parsing = FALSE ) {
200+ parse_data_frame <- function (epidata_call , df , disable_date_parsing = FALSE , reference_week_day = 1 ) {
201201 stopifnot(inherits(epidata_call , " epidata_call" ))
202202 meta <- epidata_call $ meta
203203 df <- as.data.frame(df )
@@ -224,7 +224,7 @@ parse_data_frame <- function(epidata_call, df, disable_date_parsing = FALSE) {
224224 for (i in seq_len(length(meta ))) {
225225 info <- meta [[i ]]
226226 if (info $ name %in% columns ) {
227- df [[info $ name ]] <- parse_value(info , df [[info $ name ]], disable_date_parsing = disable_date_parsing )
227+ df [[info $ name ]] <- parse_value(info , df [[info $ name ]], disable_date_parsing = disable_date_parsing , reference_week_day = reference_week_day )
228228 }
229229 }
230230 df
@@ -251,14 +251,15 @@ parse_api_date <- function(value) {
251251
252252# ' parse_api_week converts an integer to a date
253253# ' @param value value to be converted to an epiweek
254+ # ' @param reference_week_day the day of the week to use as the reference day. Defaults to Saturday.
254255# ' @return a date
255256# ' @importFrom MMWRweek MMWRweek2Date
256257# ' @keywords internal
257- parse_api_week <- function (value ) {
258+ parse_api_week <- function (value , reference_week_day = 1 ) {
258259 v <- as.integer(value )
259260 years <- floor(v / 100 )
260261 weeks <- v - (years * 100 )
261- MMWRweek :: MMWRweek2Date(years , weeks )
262+ MMWRweek :: MMWRweek2Date(years , weeks , MMWRday = reference_week_day )
262263}
263264
264265# ' @importFrom checkmate test_character test_class test_date test_integerish test_list
0 commit comments