使用 R 进行聚合并根据 "if" 标准计算 return 平均值

Use R to aggregate and return the mean based on "if" criteria

我想使用 aggregate 函数创建一个 table,其中包含列 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]))

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

如有任何帮助,我们将不胜感激!

我们可以使用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]

如果我们想要分组依据 > 0

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