R: dplyr::group_keys() 和 summarise() 有什么区别?

R: What is the difference between dplyr::group_keys() and summarise()?

假设我使用 dplyr::group_by() 对 data.frame() 进行分组。是否存在将其传递给 group_keys()summarise() 会产生不同结果的情况?惊讶地看到一个 group_keys 函数。

library(dplyr)
df <- data.frame(x = rep(1:2, 10), y = rep(1:10,2))
df_grouped <- df %>% group_by(x,y) 


# group_keys
df_grouped %>% group_keys()

# summarise
df_grouped %>% summarise()

summarise() 没有参数将去除一级分组,returning 如果有多个分组列,则为分组数据框:

library(dplyr)

mtcars %>% 
  group_by(am, vs) %>% 
  summarise()
#> `summarise()` has grouped output by 'am'. You can override using the `.groups`
#> argument.
#> # A tibble: 4 x 2
#> # Groups:   am [2]
#>      am    vs
#>   <dbl> <dbl>
#> 1     0     0
#> 2     0     1
#> 3     1     0
#> 4     1     1

group_keys() 不是 return 分组数据框,更符合惯用语 对于任务:

mtcars %>% 
  group_by(am, vs) %>% 
  group_keys()
#> # A tibble: 4 x 2
#>      am    vs
#>   <dbl> <dbl>
#> 1     0     0
#> 2     0     1
#> 3     1     0
#> 4     1     1