Nothing
df <- data.frame(
e = 1,
f = factor(c(1, 1, 2, 2), levels = 1:3),
g = c(1, 1, 2, 2),
x = c(1, 2, 1, 4)
) %>%
group_by(e, f, g, .drop = FALSE)
expect_equal(group_size(filter(df, f == 1)), c(2, 0, 0), info = "filter keeps zero length groups")
expect_equal(group_size(slice(df, 1)), c(1, 1, 0), info = "slice keeps zero length groups")
# expect_equal(
# ungroup(count(filter(df, f == 1))),
# data.frame(e = 1, f = factor(1:3), g = c(1, 2, NA), n = c(2L, 0L, 0L)),
# info = "filtering retains labels for zero length groups"
# )
# expect_equal(
# ungroup(count(slice(df, 1))),
# data.frame(e = 1, f = factor(1:3), g = c(1, 2, NA), n = c(1L, 1L, 0L)),
# info = "slicing retains labels for zero length groups"
# )
expect_equal(group_size(mutate(df, z = 2)), c(2, 2, 0), info = "mutate keeps zero length groups")
# expect_equal(nrow(summarise(df, z = n())), 3L, info = "summarise returns a row for zero length groups")
# expect_equal(group_size(arrange(df)), c(2, 2, 0), info = "arrange keeps zero length groups")
# expect_equal(group_size(arrange(df, x)), c(2, 2, 0), info = "arrange keeps zero length groups")
# gg <- bind_rows(df, df)
# expect_equal(group_size(gg), c(4L, 4L, 0L), info = "bind_rows respect the drop attribute of grouped df")
# test_that("joins respect zero length groups", {
# df1 <- data.frame(f = factor( c(1,1,2,2), levels = 1:3), x = c(1,2,1,4)) %>%
# group_by(f)
# df2 <- data.frame(f = factor( c(2,2,3,3), levels = 1:3), y = c(1,2,3,4)) %>%
# group_by(f)
# expect_equal(group_size(left_join( df1, df2, by = "f")), c(2,4))
# expect_equal(group_size(right_join( df1, df2, by = "f")), c(4,2))
# expect_equal(group_size(full_join( df1, df2, by = "f")), c(2,4,2))
# expect_equal(group_size(anti_join( df1, df2, by = "f")), c(2))
# expect_equal(group_size(inner_join( df1, df2, by = "f")), c(4))
# df1 <- data.frame(f = factor( c(1,1,2,2), levels = 1:3), x = c(1,2,1,4)) %>%
# group_by(f, .drop = FALSE)
# df2 <- data.frame(f = factor( c(2,2,3,3), levels = 1:3), y = c(1,2,3,4)) %>%
# group_by(f, .drop = FALSE)
# expect_equal(group_size(left_join( df1, df2, by = "f")), c(2,4,0))
# expect_equal(group_size(right_join( df1, df2, by = "f")), c(0,4,2))
# expect_equal(group_size(full_join( df1, df2, by = "f")), c(2,4,2))
# expect_equal(group_size(anti_join( df1, df2, by = "f")), c(2,0,0))
# expect_equal(group_size(inner_join( df1, df2, by = "f")), c(0,4,0))
# })
df <- data.frame(x = factor(1:3, levels = 1:4)) %>% group_by(x, .drop = FALSE)
expect_equal(n_groups(df), 4, info = "n_groups respects zero-length groups")
# df <- data.frame(x = factor(rep(1:3, each = 10), levels = 1:4))
# out <- df %>%
# group_by(x, .drop = FALSE) %>%
# summarise(n = n())
# expect_equal(out$n, c(10L, 10L, 10L, 0L), info = "summarise respects zero-length groups")
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.