同
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);
工作良好.
正如在旧的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)
这是一个"百万种方法来plyr解决猫"的问题,这是一个解决方案(使用@ chl的示例数据):
ddply(xx,.(value),summarise, wm = weighted.mean(avg,weight))
Run Code Online (Sandbox Code Playgroud)