在 dplyr
中一个 tibble 由多个变量分组的情况下,除了重新指定没有该变量的组之外,是否有办法删除单个分组变量?我认为它会类似于 group_by(df, -var, add = TRUE)
,尽管这不起作用。
示例:
library(dplyr)
# Works
mtcars %>%
# Original groups
group_by(cyl, gear, carb) %>%
# New groups
group_by(cyl, gear) %>%
group_vars()
# [1] "cyl" "gear"
# Doesn't work
mtcars %>%
# Original groups
group_by(cyl, gear, carb) %>%
# New groups
group_by(-carb, add = TRUE) %>%
group_vars()
# [1] "cyl" "gear" "carb" "-carb"
这显然是一个微不足道的示例 - 我的实际用例有很多基于用户输入的条件分组,我想在函数中的某个时刻删除一个分组并保留其余部分。
最佳答案
还可以使用.dots
规范并按除某些之外的所有内容进行分组。
例如。
library(dplyr)
ungroup_by <- function(x,...){
group_by_(x, .dots = group_vars(x)[!group_vars(x) %in% ...])
}
mtcars %>%
group_by(cyl, gear, carb) %>%
ungroup_by('cyl') %>%
group_vars()
[1] "gear" "carb"
类似信息可以在 this post 找到.
关于删除单个 dplyr group_by 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49065052/