我有以下数据集:
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)
答案 0 :(得分:1)
github上的bigvis
包中有加权中值函数。
library(devtools)
install_github("bigvis")
aggregate
不适用于需要多个矢量输入的函数。请改用ddply
中的plyr
。
library(plyr)
ddply(df, .(C), summarise, wm = weighted.median(time, weight))