【发布时间】:2018-03-02 08:08:46
【问题描述】:
如果 tibble 由dplyr 中的多个变量分组,除了重新指定没有该变量的组之外,还有其他方法可以删除单个分组变量吗?我想它会像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"
这显然是一个微不足道的例子——我的实际用例有很多基于用户输入的条件分组,我想在函数中的某个点删除一个分组,其余的保留。
【问题讨论】:
-
我不确定这是否可以直接从
group_by甚至ungroup()完成(因为请注意ungroup(carb)也不起作用)。不过,您或许可以使用group_by_at()或group_by_if()来处理您的案件 -
谢谢 - 我会看看那些。我想我可以用
group_vars()保存分组变量,并可能将它的编辑版本传递给group_by_at() -
这是个好主意
-
你们知道是否使用了
ungroup的...参数吗?与相关帮助文件不一致。 -
ungroup似乎不是这样 - 我什至不知道ungroup有...参数。我从未见过它与任何参数一起使用,除了 tbl