在带有R的dplyr
中,如果我已按多个变量分组,那么我可以按ungroup
的子集取消分组吗?据我所知,ungroup
会忽略提供的任何参数,并始终将所有内容取消组合。
示例:
mtcars %>%
group_by(cyl, vs, am) %>%
# this removes 'am' but grouping by 'cyl' and 'vs' remain
summarize(n = n()) %>%
ungroup(vs) # I want this to work but it ungroups everything, not just 'vs'
是否有一种方法可以删除按vs
进行的分组,同时又可以按cyl
进行分组?我可以通过
mtcars %>%
group_by(cyl, vs, am) %>%
summarize(n = n()) %>%
ungroup() %>%
group_by(cyl)
但是我觉得必须有一个比删除两个分组并仅重新添加cyl
分组更好的方法。
我在示例中使用summarize
是因为这是我的特殊情况,但是即使在这种情况下,这种行为似乎也很明显:
mtcars %>%
group_by(cyl, vs) %>%
ungroup(vs) # ungroups everything, not just 'vs'
更新:感谢大家的宝贵建议和意见。我只是尝试了此操作,由于add=FALSE
中的group_by
没什么大惊小怪的,它和我希望ungroup
所做的一样干净:
mtcars %>%
group_by(cyl, vs, am) %>%
summarize(n = n()) %>%
group_by(cyl)
由于@camille和@ julius-vainora,我知道ungroup
本身不能做到这一点,所以我必须进行分组而不是取消分组。 @RyanD的建议也很有帮助。