# Testing is_id function
withr::local_options(joyn.verbose = FALSE)
library(data.table)
x1 = data.table(id = c(1L, 1L, 2L, 3L, NA_integer_),
t = c(1L, 2L, 1L, 2L, NA_integer_),
x = 11:15)
y1 = data.table(id = c(1,2, 4),
y = c(11L, 15L, 16))
x2 = data.table(id = c(1, 4, 2, 3, NA),
t = c(1L, 2L, 1L, 2L, NA_integer_),
x = c(16, 12, NA, NA, 15))
y2 = data.table(id = c(1, 2, 5, 6, 3),
yd = c(1, 2, 5, 6, 3),
y = c(11L, 15L, 20L, 13L, 10L),
x = c(16:20))
y3 <- data.table(id = c("c","b", "c", "a"),
y = c(11L, 15L, 18L, 20L))
x3 <- data.table(id=c("c","b", "d"),
v=8:10,
foo=c(4,2, 7))
x4 = data.table(id1 = c(1, 1, 2, 3, 3),
id2 = c(1, 1, 2, 3, 4),
t = c(1L, 2L, 1L, 2L, NA_integer_),
x = c(16, 12, NA, NA, 15))
y4 = data.table(id = c(1, 2, 5, 6, 3),
id2 = c(1, 1, 2, 3, 4),
y = c(11L, 15L, 20L, 13L, 10L),
x = c(16:20))
# Checking it correctly identifies whether the dt is (not) uniquely identified by `by` var
test_that("identifies no ids", {
y <- data.table(
id = c("c", "b", "c", "a"),
y = c(11L, 15L, 18L, 20L)
)
expect_false(is_id(y, by = "id"))
z <- data.table(
id = c(1:1e7),
a = "z"
)
expect_true(is_id(z, by = "id"))
w <- data.table(
id = c(1, 1:1e7),
a = "w"
)
expect_false(is_id(w, by = "id"))
})
# Checking output when return_report is TRUE
test_that("returns correct report table", {
y <- data.table(
id = c("c", "b", "c", "a"),
y = c(11L, 15L, 18L, 20L)
)
j <- is_id(y, by = "id", return_report = TRUE) |>
roworder(by = "id")
r <- data.table(id = c("c", "b", "a", "total"),
copies = c(2L, 1L, 1L, 4L),
percent = c("50%", "25%", "25%", "100%")) |>
roworder(by = "id")
expect_equal(j, r)
})
# Checking conversion to data table
test_that("convert to data.table when dataframe", {
yy3 <- as.data.frame(y3)
expect_false(is_id(yy3, "id"))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.