如何按加权平均值分组数据?

xia*_*dai 7 r

 xa=aggregate(x$avg,by=list(x$value),FUN=weighted.mean,w=x$weight)
Run Code Online (Sandbox Code Playgroud)

给了我一个错误

weighted.mean.default(X [[1L]],...)出错:'x'和'w'的长度必须相同

weighted.mean(x$avg,w=x$weight);

工作良好.

chl*_*chl 7

正如在旧的R线程上建议的那样,您可以使用by:

wt <- c(5,  5,  4,  1)/15
x <- c(3.7,3.3,3.5,2.8)
xx <- data.frame(avg=x, value=gl(2,2), weight=wt)
by(xx, xx$value, function(x) weighted.mean(x$avg, x$weight))
Run Code Online (Sandbox Code Playgroud)


jor*_*ran 5

这是一个"百万种方法来plyr解决猫"的问题,这是一个解决方案(使用@ chl的示例数据):

ddply(xx,.(value),summarise, wm = weighted.mean(avg,weight))
Run Code Online (Sandbox Code Playgroud)