Nothing
df <- data.frame(x = 1:10, y = 1:10)
gf <- group_by(df, x)
expect_identical(
arrange(df),
df,
info = "empty arrange() returns input for data.frames"
)
expect_identical(
arrange(gf),
gf,
info = "empty arrange() returns input for grouped_df"
)
df <- data.frame(a = numeric(0))
expect_equal(
arrange(df, a),
df,
info = "arrange() can sort empty data frame"
)
df <- data.frame(x = c(2, 1, NA))
expect_equal(
df %>% arrange(x) %>% pull(),
c(1, 2, NA),
info = "local arrange() sorts missing values to the end"
)
expect_equal(
df %>% arrange(desc(x)) %>% pull(),
c(2, 1, NA),
info = "local arrange() sorts missing values to the end"
)
# -- column types --------------------------------------------------------------
df <- data.frame(x = 1:3, y = 3:1 + 2i)
expect_equal(
arrange(df, y),
data.frame(x = 3:1, y = 1:3 + 2i),
info = "arrange() handles complex columns"
)
TestS4 <- suppressWarnings(setClass("TestS4", contains = "integer"))
setMethod(
"[",
'TestS4',
function(x, i, ...) TestS4(unclass(x)[i, ...])
)
df <- data.frame(x = 1:3, y = TestS4(3:1))
expect_equal(
arrange(df, y),
data.frame(x = 3:1, y = TestS4(1:3)),
info = "arrange handles S4 classes"
)
removeClass("TestS4")
# -- data ----------------------------------------------------------------------
df1 <- data.frame(x = 1:3, y = 3:1)
df2 <- df1 %>% group_by(x)
expect_true(
inherits(arrange(df1, x), "data.frame"),
info = "arrange() preserves input class for data.frames"
)
expect_true(
inherits(arrange(df2, x), "grouped_df"),
info = "arrange() preserves input class for grouped_dfs"
)
df <- data.frame(g = c(2, 2, 1, 1), x = c(1, 3, 2, 4))
res <- df %>% group_by(g) %>% arrange(x)
expect_true(
inherits(res, "grouped_df"),
info = "arrange() updates the grouping structure: 1"
)
expect_equal(
group_rows(res),
list(c(2L, 4L), c(1L, 3L)),
info = "arrange() updates the grouping structure: 2"
)
expect_equal(
mtcars %>% arrange(mpg),
mtcars[order(mtcars$mpg), ],
info = "Test ascending column arrangement"
)
expect_equal(
mtcars %>% arrange(-mpg),
mtcars[order(-mtcars$mpg), ],
info = "Test descending column arrangement"
)
expect_equal(
mtcars %>% arrange(cyl, mpg),
mtcars[order(mtcars$cyl, mtcars$mpg), ],
info = "Test multiple column arrangement"
)
expect_equal(
mtcars %>% arrange(cyl, -mpg),
mtcars[order(mtcars$cyl - mtcars$mpg), ],
info = "Test multiple ascending and descending column arrangement"
)
# data masking
df <- data.frame(x = 1:4, y = 5:8)
expect_equal(
arrange(df, -x * y),
structure(list(x = 4:1, y = 8:5), row.names = 1:4, class = "data.frame"),
info = "arrange() can add and arrange by new columns (#89)"
)
# Grouped Operations
df <- data.frame(g = c(2, 2, 1, 1), x = c(1, 3, 2, 4))
res <- df %>% group_by(g) %>% arrange(x)
expect_true(
inherits(res, "grouped_df"),
info = "arrange() keeps the grouping class"
)
expect_equal(
group_rows(res),
list(c(2L, 4L), c(1L, 3L)),
info = "arrange() keeps the grouping structure"
)
# .by_group
df <- data.frame(g = c(2, 1, 2, 1), x = 4:1)
gf <- group_by(df, g)
expect_equal(
arrange(gf, x),
structure(
list(g = c(1, 2, 1, 2), x = 1:4),
groups = structure(
list(g = c(1, 2), .rows = list(c(1L, 3L), c(2L, 4L))), row.names = 1:2, class = "data.frame", .drop = TRUE
),
row.names = 1:4,
class = c("grouped_df", "data.frame")
),
info = "grouped arrange() ignores group_by groups"
)
expect_equal(
arrange(gf, x, .by_group = TRUE),
structure(
list(g = c(1, 1, 2, 2), x = c(1L, 3L, 2L, 4L)),
groups = structure(list(g = c(1, 2), .rows = list(1:2, 3:4)), row.names = 1:2, class = "data.frame", .drop = TRUE),
row.names = 1:4, class = c("grouped_df", "data.frame")
),
info = "grouped arrange() ignores group, unless requested with .by_group"
)
# with character columns
df <- data.frame(x = c("a", "b", "a", "b"),
y = c("c", "c", "c", "d"),
z = c(4, 2, 1, 3))
expect_equal(
df %>% arrange(-x),
data.frame(x = c("b", "b", "a", "a"),
y = c("c", "d", "c", "c"),
z = c(2, 3, 4, 1))
)
expect_equal(
df %>% arrange(-x, y),
data.frame(x = c("b", "b", "a", "a"),
y = c("c", "d", "c", "c"),
z = c(2, 3, 4, 1)) %>%
structure(row.names = 1:4)
)
expect_equal(
df %>% arrange(-x, y, z),
data.frame(x = c("b", "b", "a", "a"),
y = c("c", "d", "c", "c"),
z = c(2, 3, 1, 4)) %>%
structure(row.names = 1:4)
)
expect_equal(
df %>% arrange(desc(x)),
data.frame(x = c("b", "b", "a", "a"),
y = c("c", "d", "c", "c"),
z = c(2, 3, 4, 1))
)
expect_equal(
df %>% arrange(desc(x), y),
data.frame(x = c("b", "b", "a", "a"),
y = c("c", "d", "c", "c"),
z = c(2, 3, 4, 1)) %>%
structure(row.names = 1:4)
)
expect_equal(
df %>% arrange(desc(x), y, z),
data.frame(x = c("b", "b", "a", "a"),
y = c("c", "d", "c", "c"),
z = c(2, 3, 1, 4)) %>%
structure(row.names = 1:4)
)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.