gpt4 book ai didi

r - r 中组的加权平均值 - 一起使用聚合函数和加权平均值函数

转载 作者:行者123 更新时间:2023-12-03 20:03:17 27 4
gpt4 key购买 nike

我正在尝试计算所有数字变量中组变量 X1 的加权平均值,这里是一些示例数据

set.seed(123)
X1=rep(c("A", "B", "C"), each = 4)
Y1=as.numeric(seq(1,12,by=1))
Y2=sample(1:5,12,TRUE)
Y3=sample(10:20,12,TRUE)
wgt <- abs(rnorm(12)*10)
df <- data.frame(X1,Y1,Y2,Y3,wgt)

这是我一直用来计算 X1 的常规平均值的代码
aggregate( df[, sapply(df, is.numeric)] , by=list(df$X1) , FUN=mean, na.rm=TRUE)
我想计算重量平均值,重量变量是 wgt .我尝试了这两个代码,但都不起作用。我尝试了许多不同的方法,但没有任何效果。
aggregate( df[, sapply(df, is.numeric)] , by=list(df$X1) , FUN=weighted.mean(x, w=df$wgt), na.rm = TRUE)
aggregate( df[, sapply(df, is.numeric)] , by=list(df$X1) , FUN=weighted.mean, w=df$wgt, na.rm = TRUE)
我无法适应 加权平均功能。谁能告诉我我哪里出错了?在这种情况下还能使用这个功能吗?
任何帮助是极大的赞赏。谢谢

最佳答案

这是一种使用 aggregate 计算加权均值的方法由 by() 调用.

res <- by(df, df$X1, function(DF){
aggregate(cbind(Y1, Y2, Y3) ~ X1, DF, function(y, w)
weighted.mean(y, w = DF[['wgt']], na.rm = TRUE))
})
do.call(rbind, res)
# X1 Y1 Y2 Y3
#A A 2.152503 2.633935 18.93457
#B B 6.677851 3.589251 16.90102
#C C 10.194695 2.638378 16.70958

关于r - r 中组的加权平均值 - 一起使用聚合函数和加权平均值函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64261353/

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