Разгруппировать некоторые, но не все переменные в R + dplyr - PullRequest
0 голосов
/ 01 ноября 2018

В dplyr с R, если я сгруппировал по нескольким переменным, могу ли я разгруппировать по подмножеству тех с 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 также были очень полезны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...