В 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 также были очень полезны.