Skip to content

Commit 271fa69

Browse files
rnayebi21dshemetov
andauthored
doc+test: update epix_merge tests and docs (#514)
Co-authored-by: rnayebi21 <[email protected]> Co-authored-by: Dmitry Shemetov <[email protected]>
1 parent 7fd380c commit 271fa69

File tree

4 files changed

+226
-19
lines changed

4 files changed

+226
-19
lines changed

R/methods-epi_archive.R

Lines changed: 68 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -245,16 +245,75 @@ epix_fill_through_version <- function(x, fill_versions_end,
245245
#' be clobbered in either input archive.
246246
#'
247247
#' @examples
248-
#' # create two example epi_archive datasets
249-
#' x <- archive_cases_dv_subset$DT %>%
250-
#' dplyr::select(geo_value, time_value, version, case_rate_7d_av) %>%
251-
#' as_epi_archive(compactify = TRUE)
252-
#' y <- archive_cases_dv_subset$DT %>%
253-
#' dplyr::select(geo_value, time_value, version, percent_cli) %>%
254-
#' as_epi_archive(compactify = TRUE)
255-
#' # merge results stored in a third object:
256-
#' xy <- epix_merge(x, y)
248+
#' # Example 1
249+
#' # The s1 signal at August 1st gets revised from 10 to 11 on August 2nd
250+
#' s1 <- tibble::tibble(
251+
#' geo_value = c("ca", "ca", "ca"),
252+
#' time_value = as.Date(c("2024-08-01", "2024-08-01", "2024-08-02")),
253+
#' version = as.Date(c("2024-08-01", "2024-08-02", "2024-08-02")),
254+
#' signal1 = c(10, 11, 7)
255+
#' )
256+
#'
257+
#' s2 <- tibble::tibble(
258+
#' geo_value = c("ca", "ca"),
259+
#' time_value = as.Date(c("2024-08-01", "2024-08-02")),
260+
#' version = as.Date(c("2024-08-03", "2024-08-03")),
261+
#' signal2 = c(2, 3)
262+
#' )
263+
#'
264+
#'
265+
#' s1 <- s1 %>% as_epi_archive()
266+
#' s2 <- s2 %>% as_epi_archive()
267+
#'
268+
#' merged <- epix_merge(s1, s2, sync = "locf")
269+
#' merged[["DT"]]
270+
#'
271+
#' # Example 2
272+
#' # The s1 signal at August 1st gets revised from 12 to 13 on August 3rd
273+
#' s1 <- tibble::tibble(
274+
#' geo_value = c("ca", "ca", "ca", "ca"),
275+
#' time_value = as.Date(c("2024-08-01", "2024-08-01", "2024-08-02", "2024-08-03")),
276+
#' version = as.Date(c("2024-08-01", "2024-08-03", "2024-08-03", "2024-08-03")),
277+
#' signal1 = c(12, 13, 22, 19)
278+
#' )
279+
#'
280+
#' s2 <- tibble::tibble(
281+
#' geo_value = c("ca", "ca"),
282+
#' time_value = as.Date(c("2024-08-01", "2024-08-02")),
283+
#' version = as.Date(c("2024-08-02", "2024-08-02")),
284+
#' signal2 = c(4, 5),
285+
#' )
286+
#'
287+
#'
288+
#' s1 <- s1 %>% as_epi_archive()
289+
#' s2 <- s2 %>% as_epi_archive()
290+
#'
291+
#' merged <- epix_merge(s1, s2, sync = "locf")
292+
#' merged[["DT"]]
293+
#'
294+
#'
295+
#' # Example 3:
296+
#' s1 <- tibble::tibble(
297+
#' geo_value = c("ca", "ca", "ca"),
298+
#' time_value = as.Date(c("2024-08-01", "2024-08-02", "2024-08-03")),
299+
#' version = as.Date(c("2024-08-01", "2024-08-02", "2024-08-03")),
300+
#' signal1 = c(14, 11, 9)
301+
#' )
302+
#'
303+
#' # The s2 signal at August 1st gets revised from 3 to 5 on August 3rd
304+
#' s2 <- tibble::tibble(
305+
#' geo_value = c("ca", "ca", "ca"),
306+
#' time_value = as.Date(c("2024-08-01", "2024-08-01", "2024-08-02")),
307+
#' version = as.Date(c("2024-08-02", "2024-08-03", "2024-08-03")),
308+
#' signal2 = c(3, 5, 2),
309+
#' )
310+
#'
311+
#' s1 <- s1 %>% as_epi_archive()
312+
#' s2 <- s2 %>% as_epi_archive()
257313
#'
314+
#' # Some LOCF for signal 1 as signal 2 gets updated
315+
#' merged <- epix_merge(s1, s2, sync = "locf")
316+
#' merged[["DT"]]
258317
#' @importFrom data.table key set setkeyv
259318
#' @export
260319
epix_merge <- function(x, y,

man/epiprocess.Rd

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/epix_merge.Rd

Lines changed: 68 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/testthat/test-epix_merge.R

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,95 @@ test_that("epix_merge merges and carries forward updates properly", {
6262
)
6363

6464
expect_identical(xy, xy_expected)
65+
66+
67+
s1 <- tibble(
68+
geo_value = c("ca", "ca", "ca"),
69+
time_value = as.Date(c("2024-08-01", "2024-08-01", "2024-08-02")),
70+
version = as.Date(c("2024-08-01", "2024-08-02", "2024-08-02")),
71+
signal1 = c("XA", "XB", "XC")
72+
)
73+
74+
s2 <- tibble(
75+
geo_value = c("ca", "ca"),
76+
time_value = as.Date(c("2024-08-01", "2024-08-02")),
77+
version = as.Date(c("2024-08-03", "2024-08-03")),
78+
signal2 = c("YA", "YB")
79+
)
80+
81+
s1 <- s1 %>% as_epi_archive()
82+
s2 <- s2 %>% as_epi_archive()
83+
84+
merge1_expected <- tibble(
85+
geo_value = rep("ca", 5),
86+
time_value = as.Date(c("2024-08-01", "2024-08-01", "2024-08-01", "2024-08-02", "2024-08-02")),
87+
version = as.Date(c("2024-08-01", "2024-08-02", "2024-08-03", "2024-08-02", "2024-08-03")),
88+
signal1 = c("XA", "XB", "XB", "XC", "XC"),
89+
signal2 = c(NA, NA, "YA", NA, "YB")
90+
) %>% as_epi_archive()
91+
92+
merged1 <- epix_merge(s1, s2, sync = "locf")
93+
94+
expect_identical(merged1, merge1_expected)
95+
96+
s1 <- tibble(
97+
geo_value = c("ca", "ca", "ca", "ca"),
98+
time_value = as.Date(c("2024-08-01", "2024-08-01", "2024-08-02", "2024-08-03")),
99+
version = as.Date(c("2024-08-01", "2024-08-03", "2024-08-03", "2024-08-03")),
100+
signal1 = c("XA", "XB", "XC", "XD")
101+
)
102+
103+
s2 <- tibble(
104+
geo_value = c("ca", "ca"),
105+
time_value = as.Date(c("2024-08-01", "2024-08-02")),
106+
version = as.Date(c("2024-08-02", "2024-08-02")),
107+
signal2 = c("YA", "YB"),
108+
)
109+
110+
111+
s1 <- s1 %>% as_epi_archive()
112+
s2 <- s2 %>% as_epi_archive()
113+
114+
merge2_expected <- tibble(
115+
geo_value = rep("ca", 6),
116+
time_value = as.Date(c("2024-08-01", "2024-08-01", "2024-08-01", "2024-08-02", "2024-08-02", "2024-08-03")),
117+
version = as.Date(c("2024-08-01", "2024-08-02", "2024-08-03", "2024-08-02", "2024-08-03", "2024-08-03")),
118+
signal1 = c("XA", "XA", "XB", NA, "XC", "XD"),
119+
signal2 = c(NA, "YA", "YA", "YB", "YB", NA)
120+
) %>% as_epi_archive()
121+
122+
merged2 <- epix_merge(s1, s2, sync = "locf")
123+
124+
expect_identical(merged2, merge2_expected)
125+
126+
s1 <- tibble(
127+
geo_value = c("ca", "ca", "ca"),
128+
time_value = as.Date(c("2024-08-01", "2024-08-02", "2024-08-03")),
129+
version = as.Date(c("2024-08-01", "2024-08-02", "2024-08-03")),
130+
signal1 = c("XA", "XB", "XC")
131+
)
132+
133+
s2 <- tibble(
134+
geo_value = c("ca", "ca", "ca"),
135+
time_value = as.Date(c("2024-08-01", "2024-08-01", "2024-08-02")),
136+
version = as.Date(c("2024-08-02", "2024-08-03", "2024-08-03")),
137+
signal2 = c("YA", "YB", "YC"),
138+
)
139+
140+
s1 <- s1 %>% as_epi_archive()
141+
s2 <- s2 %>% as_epi_archive()
142+
143+
merge3_expected <- tibble(
144+
geo_value = rep("ca", 6),
145+
time_value = as.Date(c("2024-08-01", "2024-08-01", "2024-08-01", "2024-08-02", "2024-08-02", "2024-08-03")),
146+
version = as.Date(c("2024-08-01", "2024-08-02", "2024-08-03", "2024-08-02", "2024-08-03", "2024-08-03")),
147+
signal1 = c("XA", "XA", "XA", "XB", "XB", "XC"),
148+
signal2 = c(NA, "YA", "YB", NA, "YC", NA)
149+
) %>% as_epi_archive()
150+
151+
merged3 <- epix_merge(s1, s2, sync = "locf")
152+
153+
expect_identical(merged3, merge3_expected)
65154
})
66155

67156
test_that("epix_merge forbids and warns on metadata and naming issues", {

0 commit comments

Comments
 (0)