gpt4 book ai didi

在数据框中重复应用 ave 计算组均值

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

下面的代码根据group分别产生xy的组均值。假设我有许多变量要重复相同的操作。

您建议如何继续以通过单个命令获得相同的结果? (我认为有必要采用 tapply,但我不太确定..)。

x=seq(1,11,by=2); y=seq(2,12,by=2); group=rep(1:2, each=3)
dat <- data.frame(cbind(group, x, y))

dat$m_x <- ave(dat$x, dat$group)
dat$m_y <- ave(dat$y, dat$group)
dat

非常感谢。

最佳答案

使用 data.tableplyr 包的替代解决方案:

1) 使用 data.table

require(data.table)
dt <- data.table(dat, key="group")
# Following @Matthew's comment, edited:
dt[, `:=`(m_x = mean(x), m_y = mean(y)), by=group]

输出:

   group  x  y m_x m_y
1: 1 1 2 3 4
2: 1 3 4 3 4
3: 1 5 6 3 4
4: 2 7 8 9 10
5: 2 9 10 9 10
6: 2 11 12 9 10

2) 使用 plyr 和变换:

require(plyr)
ddply(dat, .(group), transform, m_x=mean(x), m_y=mean(y))

输出:

  group  x  y m_x m_y
1 1 1 2 3 4
2 1 3 4 3 4
3 1 5 6 3 4
4 2 7 8 9 10
5 2 9 10 9 10
6 2 11 12 9 10

3) 使用 plyr 和 numcolwise(注意减少的输出):

ddply(dat, .(group), numcolwise(mean))

输出:

  group x  y
1 1 3 4
2 2 9 10

关于在数据框中重复应用 ave 计算组均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14145403/

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