首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有weighted.median()函数?

有没有weighted.median()函数?
EN

Stack Overflow用户
提问于 2010-05-01 11:04:42
回答 9查看 17.8K关注 0票数 36

我正在寻找一些类似于weighted.mean()的形式。我已经通过搜索找到了一些解决方案,可以写出整个函数,但希望能有更好的用户界面。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-05-01 12:26:22

以下软件包都有一个计算加权中位数的函数:'aroma.light','ergm','limma','cwhmisc',‘ergm’,'laeken','matrixStats‘,'PSCBS’和'bigvis‘(在github上)。

为了找到它们,我使用了'sos‘包中非常有价值的findFn(),它是R内置帮助的一个扩展。

代码语言:javascript
复制
findFn('weighted median')

或,

???'weighted median'

作为?是一种与help(some.function)?some.function相同的快捷方式

票数 50
EN

Stack Overflow用户

发布于 2015-09-29 06:35:03

使用@wkmor1和@Jaitropmange的一些经验。

我已经检查了3个包中的3个函数:isotonelaekenmatrixStats。只有matrixStats工作正常。另外两个(就像median(rep(x, times=w)解决方案一样)提供整数输出。只要我计算人口年龄的中位数,小数位数就很重要。

可重现的例子。人口年龄中位数的计算

代码语言:javascript
复制
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()是可靠的解决方案

票数 30
EN

Stack Overflow用户

发布于 2013-03-03 02:31:00

要使用相同长度的(整数)权重向量w计算向量x的加权中值:

代码语言:javascript
复制
median(rep(x, times=w))
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2748725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档