在 `dplyr` 的 `summarise` 中使用组大小(`group_size`)

Uma*_*mao 2 r dplyr

我想使用组的大小作为dplyr::summarise.

例如,通过将cars数据分组并将cyl手册数量除以组大小来计算按圆柱体的手册比例:

mtcars %>%
  group_by(cyl) %>%
  summarise(zz = sum(am)/group_size(.))
Run Code Online (Sandbox Code Playgroud)

但是,(我认为),因为group_size在分组tbl_df.未分组之后,这将返回

Error in mutate_impl(.data, dots) : basic_string::resize

有没有办法做到这一点?

Ron*_*hah 5

您可能可以使用n()来获取组的行数

library(dplyr)
mtcars %>%
  group_by(cyl) %>%
  summarise(zz = sum(am)/n())

#    cyl    zz
#  <dbl> <dbl>
#1  4.00 0.727
#2  6.00 0.429
#3  8.00 0.143
Run Code Online (Sandbox Code Playgroud)