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