删除单个 dplyr group_by 组

标签 r dplyr

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/

相关文章:

r - 按组用序列填充 NA 值

如果 R 中两个数据框中不包含彼此,则从两个数据框中删除列

r - "Multi-step"在 R 中使用 broom 和 dplyr 进行回归

r - 选择每组具有多个不同值的组

R Plotly 无法从条形图中删除跟踪 0

R - 配对数据中的样本

r - 如何结合mutate_all和ifelse

python - 与 dplyr 相比,Pandas 中的索引

r - 根据成对相等对列进行分组

r-投资组合优化-Solve.QP-约束不一致