2016-12-23 6 views
-1

Ich möchte die aggregate Funktion verwenden, um eine Tabelle zu erstellen, die die Spalten date (strukturiert als Datum) und time.to.complete (strukturiert als difftime), wo Zeit ist a berechnet als Mittelwert. Die time.to.complete Daten haben negative Werte. Ich möchte alle negativen Werte ausschließen, wenn ich meinen Mittelwert errechne.Verwenden Sie R zu aggregieren und den Mittelwert basierend auf "Wenn" -Kriterien

Derzeit meine Aggregatfunktion wie folgt aussieht:

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

ich das Gesamtmittel von time.to.complete ohne die negativen Werte mit berechnen:

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

aber ich kann nicht herausfinden wie man die zwei Funktionen kombiniert.

Jede Hilfe würde sehr geschätzt werden!

Antwort

0

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

verwenden Wenn wir die Gruppe von für > 0

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

, die perfekt gearbeitet haben wollen! Vielen Dank für deine Hilfe. – grapher

Verwandte Themen