R - 为多列按组创建均值和计数的摘要 table

R - create summary table of means and counts by group for multiple columns

我有一些数据,我想按一列分组,然后用均值和多列按组计数进行汇总。一些示例数据(我的数据有更多的列和组要汇总):

df <- data.frame( 
   group = c("A", "A", "B", "B", "B", "B"),
   var1 = c(623.3, 515.2, 611.0, 729.0, NA, 911.5), 
   var2 = c(42, 28, 43, 51, 26, 64),
   stringsAsFactors = FALSE
)
print(df)

     group       var1    var2
1     A        623.30    42
2     A        515.20    28 
3     B        611.00    43 
4     B        729.00    51 
5     B        NA        26
6     B        911.5     64

我想要一个按 group 分组的摘要 table,它具有其他变量的均值和计数,忽略 NA。它应该看起来像这样:

     group    mean.var1    count.var1   mean.var2   count.var2
1     A        569.25         2             35          2
2     B        750.5          3             46          4

这是更可取的顺序,尽管变量名并不重要,只要清楚它所指的是哪个变量和哪个函数(均值或计数)即可。小数位也不重要。

我们可以按 'group' 和 summarise across 数字列进行分组以获得 mean 和 non-NA 的计数(sum(!is.na)

library(dplyr)
df %>%
   group_by(group) %>% 
  summarise(across(where(is.numeric),
    list(mean = ~ mean(.x, na.rm = TRUE), count = ~ sum(!is.na(.x)))))