# Preparations
df1 <- data.frame(
id = c(1, 2, 3, 1, 3),
year = c(2022, 2022, 2022, 2022, 2000),
item1 = c(NA, 1, 1, 2, 3),
item2 = c(NA, 1, 1, 2, 3),
item3 = c(NA, 1, 1, 2, 3)
)
expected1 <- data.frame(
id = c(1, 2, 3),
year = c(2022, 2022, 2022),
item1 = c(2, 1, 1),
item2 = c(2, 1, 1),
item3 = c(2, 1, 1)
)
expected2 <- data.frame(
id = c(1, 2, 3),
year = c(2022, 2022, 2022),
item1 = c(NA, 1, 1),
item2 = c(NA, 1, 1),
item3 = c(NA, 1, 1)
)
expected3 <- data.frame(
id = c(1, 2, 3),
year = c(2022, 2022, 2000),
item1 = c(2, 1, 3),
item2 = c(2, 1, 3),
item3 = c(2, 1, 3)
)
expected4 <- data.frame(
id = c(1, 2, 3, 3),
year = c(2022, 2022, 2022, 2000),
item1 = c(2, 1, 1, 3),
item2 = c(2, 1, 1, 3),
item3 = c(2, 1, 1, 3)
)
# Testing
test_that("data_unique returns original data if no duplicates", {
test <- data.frame(x = c(1, 2), y = c(3, 4))
expect_identical(
data_unique(test, c("x", "y"), verbose = FALSE),
test
)
expect_identical(
data_unique(test, "x", verbose = FALSE),
test
)
})
test_that("data_unique basic", {
expect_identical(
data_unique(df1, select = "id", verbose = FALSE),
expected1
)
})
test_that("data_unique basic method best", {
expect_identical(
data_unique(df1, select = "id", keep = "best", verbose = FALSE),
expected1
)
})
test_that("data_unique basic method first", {
expect_identical(
data_unique(df1, select = "id", keep = "first", verbose = FALSE),
expected2
)
})
test_that("data_unique basic method last", {
expect_identical(
data_unique(df1, select = "id", keep = "last", verbose = FALSE),
expected3
)
})
test_that("data_unique unquoted", {
expect_identical(
data_unique(df1, select = id, verbose = FALSE),
expected1
)
})
test_that("data_unique vector", {
expect_identical(
data_unique(df1, select = 1, verbose = FALSE),
expected1
)
})
test_that("data_unique select-helper", {
expect_identical(
data_unique(df1, select = contains("id"), verbose = FALSE),
expected1
)
})
test_that("data_unique multiple IDs", {
x <- data_unique(df1, select = c("id", "year"), verbose = FALSE)
rownames(x) <- NULL
expect_identical(
x,
expected4
)
})
test_that("data_unique multiple IDs formula", {
x <- data_unique(df1, select = ~ id + year, verbose = FALSE)
rownames(x) <- NULL
expect_identical(
x,
expected4
)
})
test_that("data_unique multiple IDs vector", {
x <- data_unique(df1, select = 1:2, verbose = FALSE)
rownames(x) <- NULL
expect_identical(
x,
expected4
)
})
test_that("data_unique preserve attributes", {
attr(df1, "testing") <- "custom.attribute"
x <- attributes(data_unique(df1, id, verbose = FALSE))
expect_identical(
x$testing,
"custom.attribute"
)
})
test_that("data_unique, arg 'verbose' works", {
expect_message(
data_unique(df1, select = ~ id + year),
"removed, with method"
)
})
test_that("data_unique works with groups", {
df <- data.frame(
g = c(1, 1, 2, 2),
x = c(1, 1, 2, 1)
)
df <- data_group(df, "g")
expected <- data.frame(
g = c(1, 2, 2),
x = c(1, 2, 1)
)
expected <- data_group(expected, "g")
x <- data_unique(df, "x", verbose = FALSE)
expect_identical(x, expected, ignore_attr = TRUE)
y <- attributes(x)
expect_identical(attributes(df)$class, y$class)
expect_identical(attributes(df)$groups, y$groups)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.