【问题标题】:Use R to aggregate and return the mean based on "if" criteria使用 R 聚合并返回基于“if”标准的平均值
【发布时间】:2017-05-08 16:52:29
【问题描述】:

我想使用aggregate 函数创建一个表,其中包含date(结构为日期)和time.to.complete(结构为difftime)列,其中时间是作为平均值计算的。 time.to.complete 数据具有负值。我想在计算平均值时排除所有负值。

目前,我的聚合函数如下所示:

mean.table<-aggregate(data$time.to.complete, list(data$date), mean)

我可以使用以下方法计算 time.to.complete 的整体平均值:

average<-with(data, mean(data$time.to.complete[time.to.complete>0]))

但是,我不知道如何结合这两个功能。

任何帮助将不胜感激!

【问题讨论】:

    标签: r if-statement conditional aggregate


    【解决方案1】:

    我们可以使用data.table

    library(data.table)
    setDT(data)[, .(MeanbyDate = mean(time.to.complete),
          MeanOveralltime = mean(data$time.to.complete[data$time.to.complete > 0])), by = date]
    

    如果我们想为&gt; 0分组

    setDT(data)[, .(MeanbyDate = mean(time.to.complete),
          MeanGreaterthan0 = mean(time.to.complete[time.to.complete > 0])), by = date]
    

    【讨论】:

    • 效果很好!非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2021-04-25
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多