summarise() regrouping output 警告
这里讨论的是return的属性,而不是group_by本身。以下面代码为例,summarise之后给出的警告信息是指,这里return的tibble的atrribute中group_by参数只有homeword,没有species。也就是说,返回一个按照homeword这个level进行group_by的tibble,species被drop掉了。
如果设置.groups = "drop"
,返回的是一个不带任何group level的tibble。
Unfortunately, it would be very difficult to change this default now because a lot of code probably relies on it. Instead, we’re doing the next best thing: exposing the default behaviour more explicitly and making it easier to change. In dplyr 1.0.0, the code above will display a message telling you how the result has been grouped:
homeworld_species <- starwars %>%
group_by(homeworld, species) %>%
summarise(n = n())
#> `summarise()` regrouping output by 'homeworld' (override with `.groups` argument)
The text hints at how to take control of grouping and eliminate the message: a new .groups
argument allows you to control the grouping of the result. It currently has four possible values:
-
.groups = "drop_last"
drops the last grouping level (i.e. the default behaviour sans message). -
.groups = "drop"
drops all grouping levels and returns a tibble. -
.groups = "keep"
preserves the grouping of the input. -
.groups = "rowwise"
turns each row into its own group.