Ich habe für eine Weile kämpfen mit diesem. Ich bin mit ts Daten und alle damit verbundenen R-Paketen zu arbeiten. I df eine mit mehreren Variablen, einschließlich dessen, was ‚Zeitpunkt der day'in GMT "% H% M" und das Datum "% Y /% m/e%" aufgetreten Abtastung haben. Ich möchte meine Datumsdaten in "Wochen" (d. H.% W /% g) zusammenfassen und berechnen und die durchschnittliche "Tageszeit" berechnen, wenn die Stichprobe während dieser Woche stattgefunden hat.Aggregieren mean "% H% M" in "Woche" Bins in R
konnte ich andere FUN auf numerischen Variablen (zB Gewicht) berechnen, indem man zuerst meine df in einem Zoo Objekt verwandeln und dann aggregate.zoo Befehl wie folgt verwendet:
#calculate the sum weight captured every week
x2c <- aggregate(OA_zoo, as.Date(cut(time(OA_zoo), "week")), sum)
jedoch
, ich bin nicht sicher, wie um die Tatsache zu bekommen, dass ich mit Datumsformat statt num und würden uns freuen irgendwelche Tipps arbeite! Auch habe ich offensichtlich viel zu viel codiert, indem ich jede meiner Variablen separat gemacht habe. Wäre es möglich, verschiedene FUN (sum/mean/max/min) auf mein df anzuwenden, indem man "plural" mit "wöchentlich" aggregiert? Oder einige andere Pakete?
EDITS/PRÄZISIERUNGEN Hier ist die dput
Ausgabe einer Probe meiner vollständigen Datensatz. Ich habe Daten von 2004-2011. Was ich mit ggplot2 betrachten/darstellen möchte, ist der Mittelwert/Median von TIME (% H% M) aggregiert im Zeitraum von Wochen über die Zeit (2004-2011). Momentan werden meine Daten nicht in Woche aggregiert, sondern täglich (Stichprobe).
> dput(godin)
structure(list(depth = c(878, 1200, 1170, 936, 942, 964, 951,
953, 911, 969, 960, 987, 991, 997, 1024, 978, 1024, 951, 984,
931, 1006, 929, 973, 986, 935, 989, 1042, 1015, 914, 984), duration = c(0.8,
2.6, 6.5, 3.2, 4.1, 6.4, 7.2, 5.3, 7.4, 7, 7, 5.5, 7.5, 7.3,
7.5, 7, 4.2, 3, 5, 5, 9.3, 7.9, 7.3, 7.2, 7, 5.2, 8, 6, 7.5,
7), Greenland = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 40L, 28L, 0L,
0L, 34L, 7L, 28L, 0L, 0L, 0L, 27L, 0L, 0L, 0L, 44L, 59L, 0L,
0L, 0L, 0L, 0L, 0L), date2 = structure(c(12617, 12627, 12631,
12996, 12669, 13036, 12669, 13036, 12670, 13036, 12670, 13037,
12671, 13037, 12671, 13037, 12671, 13038, 12672, 13038, 12672,
13038, 12672, 13039, 12631, 12997, 12673, 13039, 12673, 13039
), class = "Date"), TIME = c("0940", "0145", "0945", "2045",
"1615", "0310", "2130", "1045", "0625", "1830", "1520", "0630",
"0035", "1330", "0930", "2215", "2010", "0645", "0155", "1205",
"0815", "1845", "2115", "0350", "1745", "0410", "0550", "1345",
"1515", "2115")), .Names = c("depth", "duration", "Greenland",
"date2", "TIME"), class = "data.frame", row.names = c("6761",
"9019", "9020", "9021", "9022", "9023", "9024", "9025", "9026",
"9027", "9028", "9029", "9030", "9031", "9032", "9033", "9034",
"9035", "9036", "9037", "9038", "9039", "9040", "9041", "9042",
"9043", "9044", "9045", "9046", "9047"))
Das Problem für mich ist unklar. Ist das Problem mit der Berechnung eines Mittelwerts einer Zeit (im Gegensatz zu einer numerischen) oder mit der Aggregation nach Woche? – mac
Sie müssen wirklich ein [reproduzierbares Beispiel] (http://stackoverflow.com/q/5963269/271616) zur Verfügung stellen, damit jeder helfen kann. –
Wie nehmen Sie den Mittelwert einer Tageszeit? Würden Sie nicht stattdessen Median oder Mode machen? – A5C1D2H2I1M1N2O1R2T1