test_that("returns only duplicated rows of selected columns", {
tib <- tibble::tibble(x = c(1, 2, 1), y = c(1, 1, 1))
expect_identical(duplicates(tib), tib[c(1, 3), ])
expect_identical(duplicates(as.data.frame(tib)), tib[c(1, 3), ])
expect_identical(
duplicates(data.frame(x = c(1, 2, 1), y = 1:3), x),
dplyr::tibble(x = c(1, 1), y = c(1L, 3L))
)
expect_identical(
duplicates(data.frame(x = c(1, 2, 1), y = 1:3), x, y),
dplyr::tibble(x = double(0), y = integer(0))
)
})
test_that("keep_all working", {
data <- tibble::tibble(x = c(1, 2, 1, 1), y = c(1, 1, 1, 5))
expect_identical(
duplicates(data, y),
tibble::tibble(x = c(1, 2, 1), y = c(1, 1, 1))
)
expect_identical(
duplicates(data, x, y),
tibble::tibble(x = c(1, 1), y = c(1, 1))
)
expect_identical(
duplicates(data, y, x),
tibble::tibble(x = c(1, 1), y = c(1, 1))
)
expect_identical(
duplicates(data),
tibble::tibble(x = c(1, 1), y = c(1, 1))
)
expect_identical(
duplicates(data, y, .keep_all = FALSE),
tibble::tibble(y = c(1, 1, 1))
)
})
test_that("handles data frame with no rows", {
data <- tibble::tibble(x = integer(), y = integer())
expect_equal(
duplicates(data),
data
)
expect_equal(
duplicates(data, x),
data
)
expect_equal(
duplicates(data, x, .keep_all = FALSE),
dplyr::tibble(x = integer())
)
})
test_that("handles data frame with no columns", {
data <- tibble::tibble()
expect_identical(
duplicates(data),
data
)
expect_identical(
duplicates(data, .keep_all = FALSE),
data
)
})
test_that("handles columns with missing values", {
data <- tibble::tibble(x = c(1, 2, NA, 1, 1), y = c(1, 1, NA, NA, NA))
expect_identical(
duplicates(data),
tibble::tibble(x = c(1, 1), y = as.double(c(NA, NA)))
)
expect_identical(
duplicates(data, y),
data
)
expect_identical(
duplicates(data, y, .keep_all = FALSE),
tibble::tibble(y = c(1, 1, NA, NA, NA))
)
})
test_that("handles data set with no duplicates", {
data <- tibble::tibble(x = c(1, 2, NA), z = 1:3)
expect_identical(duplicates(data), tibble::tibble(x = double(), z = integer()))
expect_identical(duplicates(data, x), tibble::tibble(x = double(), z = integer()))
expect_identical(duplicates(data, x, .keep_all = FALSE), tibble::tibble(x = double()))
})
test_that("errors when input argument is not a data.frame", {
expect_error(duplicates("a"), "Data.frame must be a data.frame.")
expect_error(duplicates(1), "Data.frame must be a data.frame.")
expect_error(duplicates(1L), "Data.frame must be a data.frame.")
expect_error(duplicates(TRUE), "Data.frame must be a data.frame.")
expect_error(duplicates(NULL), "Data.frame must be a data.frame.")
expect_error(duplicates(NA), "Data.frame must be a data.frame.")
})
test_that("preserves groups", {
data <- tibble::tibble(
X = c(1, 2, 2, 3, 3, 4, 4),
Y = c(11, 12, 13, 14, 14, 15, 15),
a = c("red", "orange", "yellow", "green", "green", "blue", "blue"),
b = c("white", "white", "white", "white", "white", "white", "white")
)
data <- dplyr::group_by(data, a, b)
data <- duplicates(data)
data_dup <- tibble::tibble(
X = c(3, 3, 4, 4),
Y = c(14, 14, 15, 15),
a = c("green", "green", "blue", "blue"),
b = c("white", "white", "white", "white")
)
data_dup <- dplyr::group_by(data_dup, a, b)
expect_identical(data_dup, data)
})
test_that("preserves single active geometry column called geometry", {
skip_if_not_installed("sf")
data <- tibble::tibble(
X = c(1, 2, 2, 3, 3, 4, 4),
Y = c(11, 12, 13, 14, 14, 15, 15),
a = c("red", "orange", "yellow", "green", "green", "blue", "blue"),
b = c("white", "white", "white", "white", "white", "white", "white")
)
data <- sf::st_as_sf(data, coords = c("X", "Y"))
data <- duplicates(data)
data_dup <- tibble::tibble(
X = c(3, 3, 4, 4),
Y = c(14, 14, 15, 15),
a = c("green", "green", "blue", "blue"),
b = c("white", "white", "white", "white")
)
data_dup <- sf::st_as_sf(data_dup, coords = c("X", "Y"))
expect_identical(data_dup, data)
})
test_that("preserves single active geometry column called map", {
skip_if_not_installed("sf")
data <- tibble::tibble(
X = c(1, 2, 2, 3, 3, 4, 4),
Y = c(11, 12, 13, 14, 14, 15, 15),
a = c("red", "orange", "yellow", "green", "green", "blue", "blue"),
b = c("white", "white", "white", "white", "white", "white", "white")
)
data <- sf::st_as_sf(data, coords = c("X", "Y"), sf_column_name = "map")
data <- duplicates(data)
data_dup <- tibble::tibble(
X = c(3, 3, 4, 4),
Y = c(14, 14, 15, 15),
a = c("green", "green", "blue", "blue"),
b = c("white", "white", "white", "white")
)
data_dup <- sf::st_as_sf(data_dup, coords = c("X", "Y"), sf_column_name = "map")
expect_identical(data_dup, data)
})
test_that("deals with one active geometry column and one inactive geometry column", {
skip_if_not_installed("sf")
data <- tibble::tibble(
X = c(1, 2, 2, 3, 3, 4, 4),
Y = c(11, 12, 13, 14, 14, 15, 15),
a = c("red", "orange", "yellow", "green", "green", "blue", "blue"),
b = c("white", "white", "white", "white", "white", "white", "white"),
I = c(101, 102, 102, 103, 103, 104, 104),
J = c(1001, 1002, 1003, 1004, 1004, 1005, 1005)
)
data <- sf::st_as_sf(data, coords = c("X", "Y"))
data <- tibble::as_tibble(data)
data <- sf::st_as_sf(data, coords = c("I", "J"), sf_column_name = "map")
data <- duplicates(data)
data_dup <- tibble::tibble(
X = c(3, 3, 4, 4),
Y = c(14, 14, 15, 15),
a = c("green", "green", "blue", "blue"),
b = c("white", "white", "white", "white"),
I = c(103, 103, 104, 104),
J = c(1004, 1004, 1005, 1005)
)
data_dup <- sf::st_as_sf(data_dup, coords = c("X", "Y"))
data_dup <- tibble::as_tibble(data_dup)
data_dup <- sf::st_as_sf(data_dup, coords = c("I", "J"), sf_column_name = "map")
expect_identical(data_dup, data)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.