取消分组R + dplyr中的一些但不是全部变量

时间:2018-10-31 21:10:08

标签: r dplyr

在带有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的建议也很有帮助。

0 个答案:

没有答案