2016-12-23 2 views
-1

Я хочу использовать функцию aggregate для создания таблицы с столбцами date (структурированной как дата) и time.to.complete (структурированной как difftime), где время а вычисляется как среднее значение. Данные time.to.complete имеют отрицательные значения. Я хочу исключить все отрицательные значения, когда рассчитываю свое среднее значение.Используйте R для агрегирования и возврата среднего значения на основе критериев «if»

В настоящее время моя агрегатная функция выглядит следующим образом:

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])) 

Однако, я не могу понять как объединить две функции.

Любая помощь была бы принята с благодарностью!

ответ

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] 
+0

Это работало отлично! Большое спасибо за Вашу помощь. – grapher

Смежные вопросы