假设我有一个数据框,其中一列表示值,另一列表示该值被观察到的次数:
x <- data.frame(value=c(1,2,3), count=c(4,2,1))
x
# value count
# 1 1 4
# 2 2 2
# 3 3 1我知道我可以使用weighted.mean获得数据的加权平均值,使用几个软件包(例如limma)提供的weighted.median函数获得加权中值,但是我如何获得数据的其他加权统计数据,例如第一和第三个四分位数,可能还有标准差?使用rep“扩展”数据不是一个选择,因为sum(x$count)大约是30亿(人类基因组的大小)。
发布于 2011-03-15 10:14:59
你有没有尝试过这些包:
Hmisc --它有几个加权的统计数据,包括加权的quantileslaeken --它有加权的分位数。发布于 2011-03-15 11:30:39
或者尝试对其进行反向转换,并以通常的方式运行分析:
dtf <- data.frame(value = 1:3, count = c(4, 2, 1))
x <- with(dtf, rep(value, count))
summary(x)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.000 1.000 1.000 1.571 2.000 3.000
fivenum(x)
[1] 1 1 1 2 3发布于 2015-07-12 06:32:06
要完成Prasad Chalasani的answer,下面是完成加权中值的代码,给定一个列表示值,另一个列表示观察到该值的次数。注意,它使用Hmisc包中的wtd.quantile函数。
require(Hmisc)
x <- data.frame(value=c(1,2,3), count=c(4,2,1))
## value count
## 1 1 4
## 2 2 2
## 3 3 1
wtd.quantile(x$value, x$count, probs = 0.5)
## 50%
## 1 https://stackoverflow.com/questions/5306725
复制相似问题