一次聚合数据框中的多列计算不同列的不同统计信息-R
aggregate multiple columns in a data frame at once calculating different statistics on different columns - R
我正在尝试执行一个简单的练习,即按第一列聚合数据框中的列。每列都汇总了一个摘要统计信息,但它们并不相同。例如,有几列我需要均值,有几列需要标准差,有几列需要最大值,等等。我在 R 中使用带有聚合函数的文档,但由于某种原因无法获取它。
你能帮忙吗?
附件是一个简单的示例数据集。出于说明目的,我需要按“名称”列进行汇总。 Var1 我需要均值,Var2 我需要标准差,Var3 我需要最大值,Var4 我想要总和
name v1 v2 v3 v4 v5
a 78 74 43 76 61
b 50 84 76 73 35
c 4 55 4 86 32
d 23 29 81 73 55
e 36 68 27 70 96
# A tibble: 11 x 5
name v1 v2 v3 v4
<fct> <dbl> <dbl> <int> <int>
1 a 78 NaN 43 76
2 b 50 NaN 76 73
3 c 4 NaN 4 86
4 d 23 NaN 81 73
5 e 36 NaN 27 70
6 f 13 NaN 34 77
7 g 2 NaN 57 79
8 h 72 NaN 29 3
9 i 17 NaN 56 14
10 j 87 NaN 36 13
11 k 9 NaN 74 41
我们可以使用 dplyr
来获得灵活性
library(dplyr)
df1 %>%
group_by(name) %>%
summarise(v1 = mean(v1, na.rm = TRUE),
v2 = sd(v2, na.rm = TRUE), v3 = max(v3, na.rm = TRUE),
v4 = sum(v4, na.rm = TRUE))
如果针对不同的功能要屏蔽多个列,使用across
df1 %>%
group_by(name) %>%
summarise(across(c(v1, v2), mean, na.rm = TRUE),
v3 = sd(v3, na.rm = TRUE),
across(c(v4, v5), sum, na.rm = TRUE))
或使用 collapse
中的 collap
library(collapse)
collap(df1, ~ name, custom = list(fmean = c("v1", "v2"),
fsd = "v3", fsum = c("v4", "v5")))
我正在尝试执行一个简单的练习,即按第一列聚合数据框中的列。每列都汇总了一个摘要统计信息,但它们并不相同。例如,有几列我需要均值,有几列需要标准差,有几列需要最大值,等等。我在 R 中使用带有聚合函数的文档,但由于某种原因无法获取它。
你能帮忙吗?
附件是一个简单的示例数据集。出于说明目的,我需要按“名称”列进行汇总。 Var1 我需要均值,Var2 我需要标准差,Var3 我需要最大值,Var4 我想要总和
name v1 v2 v3 v4 v5
a 78 74 43 76 61
b 50 84 76 73 35
c 4 55 4 86 32
d 23 29 81 73 55
e 36 68 27 70 96
# A tibble: 11 x 5
name v1 v2 v3 v4
<fct> <dbl> <dbl> <int> <int>
1 a 78 NaN 43 76
2 b 50 NaN 76 73
3 c 4 NaN 4 86
4 d 23 NaN 81 73
5 e 36 NaN 27 70
6 f 13 NaN 34 77
7 g 2 NaN 57 79
8 h 72 NaN 29 3
9 i 17 NaN 56 14
10 j 87 NaN 36 13
11 k 9 NaN 74 41
我们可以使用 dplyr
来获得灵活性
library(dplyr)
df1 %>%
group_by(name) %>%
summarise(v1 = mean(v1, na.rm = TRUE),
v2 = sd(v2, na.rm = TRUE), v3 = max(v3, na.rm = TRUE),
v4 = sum(v4, na.rm = TRUE))
如果针对不同的功能要屏蔽多个列,使用across
df1 %>%
group_by(name) %>%
summarise(across(c(v1, v2), mean, na.rm = TRUE),
v3 = sd(v3, na.rm = TRUE),
across(c(v4, v5), sum, na.rm = TRUE))
或使用 collapse
collap
library(collapse)
collap(df1, ~ name, custom = list(fmean = c("v1", "v2"),
fsd = "v3", fsum = c("v4", "v5")))