我正在寻找一些类似于weighted.mean()的形式。我已经通过搜索找到了一些解决方案,可以写出整个函数,但希望能有更好的用户界面。
发布于 2010-05-01 12:26:22
以下软件包都有一个计算加权中位数的函数:'aroma.light','ergm','limma','cwhmisc',‘ergm’,'laeken','matrixStats‘,'PSCBS’和'bigvis‘(在github上)。
为了找到它们,我使用了'sos‘包中非常有价值的findFn(),它是R内置帮助的一个扩展。
findFn('weighted median')或,
???'weighted median'
作为?是一种与help(some.function)的?some.function相同的快捷方式
发布于 2015-09-29 06:35:03
使用@wkmor1和@Jaitropmange的一些经验。
我已经检查了3个包中的3个函数:isotone、laeken和matrixStats。只有matrixStats工作正常。另外两个(就像median(rep(x, times=w)解决方案一样)提供整数输出。只要我计算人口年龄的中位数,小数位数就很重要。
可重现的例子。人口年龄中位数的计算
df <- data.frame(age = 0:100,
pop = spline(c(4,7,9,8,7,6,4,3,2,1),n = 101)$y)
library(isotone)
library(laeken)
library(matrixStats)
isotone::weighted.median(df$age,df$pop)
# [1] 36
laeken::weightedMedian(df$age,df$pop)
# [1] 36
matrixStats::weightedMedian(df$age,df$pop)
# [1] 36.164
median(rep(df$age, times=df$pop))
# [1] 35摘要
matrixStats::weightedMedian()是可靠的解决方案
发布于 2013-03-03 02:31:00
要使用相同长度的(整数)权重向量w计算向量x的加权中值:
median(rep(x, times=w))https://stackoverflow.com/questions/2748725
复制相似问题