汇总以找到加权中位数

时间:2014-01-23 10:08:09

标签: r aggregate weighted-average

我有以下数据集:

df <- data.frame(
  C      = c(1,2,3,1,2,3,1,2,3,1),
  weight = c(1,1.5,2,2,1.5,1,2,1,1.5,2.5),
  time   = c(15,20,30,45,60,15,20,30,45,60)
)

我需要通过变量C聚合数据,以便找到每个C的中值时间。每个观察值由变量“weight”加权。

有没有办法用以下代码中的加权中位数替换'mean'?

output<-aggregate(.~C, data=df, mean, na.rm=TRUE)

1 个答案:

答案 0 :(得分:1)

github上的bigvis包中有加权中值函数。

library(devtools)
install_github("bigvis")

aggregate不适用于需要多个矢量输入的函数。请改用ddply中的plyr

library(plyr)
ddply(df, .(C), summarise, wm = weighted.median(time, weight))