繁体   English   中英

如何计算R中的加权平均值?

[英]How to compute weighted mean in R?

如何计算R的加权平均值?

例如,我有4个元素,其中1个元素的大小(或:长度,宽度等)10和3个元素的大小为2。

> z = data.frame(count=c(1,3), size=c(10,2))
> z
  count size
1     1   10
2     3    2

加权平均值为(10 * 1 + 2 * 3) / 4 = 4

使用weighted.mean

> weighted.mean(z$size, z$count)
[1] 4

好像你已经知道如何计算它,只需要在正确的方向上轻推即可实现它。 由于R是矢量化的,因此非常简单:

with(z, sum(count*size)/sum(count))

with bit只保存输入,相当于sum(z$count*z$size)/sum(z$count)

或者如你所指出的那样使用内置函数weighted.mean() 使用您自己的函数可以证明更快,但不会执行与内置函数相同的错误检查。

builtin <- function() with(z, weighted.mean(count, size))
rollyourown <- function() with(z, sum(count*size)/sum(count))

require(rbenchmark)  
  benchmark(builtin(), rollyourown(),
            replications = 1000000,
            columns = c("test", "elapsed", "relative"),
            order = "relative")
#-----
           test elapsed relative
2 rollyourown()   13.26 1.000000
1     builtin()   22.84 1.722474

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM