gpt4 book ai didi

r - dplyr 中的分组均值

转载 作者:行者123 更新时间:2023-12-02 09:12:32 36 4
gpt4 key购买 nike

我从一篇已发表的论文中找到了以下代码。在这个具体案例中,我想说这个策略效果很好,因为它很明确,而且变量相对较少。然而,代码“有点”重复,我想知道是否有一种不那么重复的方法来做到这一点,仍然符合dplyr风格和生活方式。

enter image description here

测试用例:

set.seed(42)
df <- data.frame(GR=sample(1:2, 100, replace=TRUE),
as.data.frame(replicate(20, rnorm(100))))
names(df)[-1] <- LETTERS[1:20]

现在使用 aggregate 分组均值表:

aggregate(df[,-1], df[1],mean)

...并与 dplyr :

df %>% group_by(GR) %>% summarize(mean.A=mean(A),
mean.B=mean(B),
mean.C=mean(C),
mean.D=mean(D),
mean.E=mean(E),
# skipped 14 rows
mean.T=mean(T))

有没有DRY dplyr 中执行此操作的方法?我知道R中的所有编程工具也可以在 dplyr 中找到。 - 所以问题不在于如何做到这一点..相反,我正在寻找一个惯用的 dplyr这样做的方法。我在现实生活中见过类似但更长的例子。

最佳答案

当要汇总多列时,请使用summarise_all(如果除分组变量之外的所有其他列都需要使用函数进行汇总)

df %>%
group_by(GR) %>%
summarise_all(funs(mean = mean(., na.rm = TRUE)))

如果我们只需要在选定的列上执行此操作,请尝试使用 summarise_at

df %>%
group_by(GR) %>%
summarise_at(vars(A, B, C, D, E), funs(mean = mean(., na.rm = TRUE)))

此外,当我们只想将函数应用于某些类型列时,请检查 summarise_if

关于r - dplyr 中的分组均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50530672/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com