【问题标题】:Aggregate to find the weighted median [duplicate]聚合以找到加权中位数[重复]
【发布时间】:2014-01-23 10:08:09
【问题描述】:

我有以下数据集:

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 的中位时间。每个观察值都由变量“权重”加权。

有没有办法在下面的代码中用加权中位数代替“平均值”?

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

【问题讨论】:

    标签: r aggregate weighted-average


    【解决方案1】:

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

    library(devtools)
    install_github("bigvis")
    

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

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

    【讨论】:

    • 尝试安装 bigvis 时出现以下错误:函数错误(类型、味精、asError = TRUE):无法解析主机:github.com;找不到主机
    • @user2568648 您在公司网络上吗?如果是这样,最可能的解释是您的网络管理员阻止了对 github 的访问。尝试在浏览器中访问该网站。
    猜你喜欢
    • 1970-01-01
    • 2017-10-04
    • 2020-08-10
    • 2021-02-01
    • 2018-09-19
    • 2015-01-04
    • 2012-05-15
    • 1970-01-01
    • 2021-07-27
    相关资源
    最近更新 更多