2016-04-27 3 views
0

Hallo ich versuche, Daten in monatlich, wöchentlich zu schneiden , Tages- und Stundensätze die folgenden Zeitstempel Daten

[1] "2015-12-31 13:54:00 AEDT" "2015-12-30 12:41:00 AEDT" "2015-12-30 07:14:00 AEDT" "2015-12-30 03:07:00 AEDT" 
[5] "2015-12-30 02:27:00 AEDT" "2015-12-29 17:09:00 AEDT" "2015-12-29 17:07:00 AEDT" "2015-12-29 16:46:00 AEDT" 
[9] "2015-12-29 16:17:00 AEDT" "2015-12-29 15:10:00 AEDT" "2015-12-29 14:22:00 AEDT" "2015-12-29 12:17:00 AEDT" 
[13] "2015-12-28 12:45:00 AEDT" "2015-12-28 11:13:00 AEDT" "2015-12-27 21:25:00 AEDT" "2015-12-27 20:25:00 AEDT" 

verwendet, um ich die von Faktor zu konvertieren folgenden Datumsformat posixlt:

td$datetime <- as.POSIXlt(as.character(td$time), format="%Y-%m-%d %H:%M") 

str(td) 
datetime   : POSIXlt, format: "2015-12-31 13:54:00" "2015-12-30 12:41:00" "2015-12-30 07:14:00" "2015-12-30 03:07:00" ... 

die folgenden 3 alle funktionieren:

# create a column for month time break 
td$month <- as.Date(cut(td$datetime, breaks = "month")) 

# create a column for weekly time break 
td$week <- as.Date(cut(td$datetime, breaks = "week", start.on.monday = FALSE)) 

# create a column for daily time break 
td$day <- as.Date(cut(td$datetime, breaks = "day")) 

aber wenn ich stündlich tun, es funktioniert nicht

td$hour <- as.Date(cut(as.character(td$datetime), breaks = "hour")). 
I get the following error 
Error in cut.default(as.character(td$datetime), breaks = "Hour") : 
    'x' must be numeric 
+0

Keine Notwendigkeit, Charakter und Datum zu konvertieren. Versuchen Sie: cut (td $ datetime, Pausen = "Stunde") – Dave2e

+0

Hallo Dave, ich habe das versucht - es scheint in Tag, Woche, Monat funktioniert perfekt, aber Schneiden in Stunden produziert entweder einen Schnitt am Tag oder einen Fehler, abhängig auf was ich versuche. Zuletzt versuchte ich wie folgt: td $ Stunde <- as.Date.character (Schnitt (td $ datetime, Pausen = "Stunde")) dann t_freq_day_hour <- Tabelle (Format (td $ Stunde2, "% d-% b -% Y% H:% M ")). Die Datumszeit ist posix dh: $ datetime: POSIXlt, Format: "2015-12-31 13:54:00" "2015-12-30 12:41:00" "2015-12-30 07:14:00" " – maric

Antwort

0

ich eine Antwort gefunden das funktioniert und wollte teilen!

Der Schlüssel ist das Verwenden des POSITct zum Schneiden und nicht zum Schneiden, was die Stundengranularität nicht zu erfassen scheint.

Getestet habe ich es durch ein Aggregat zu tun, auf diese Weise:

td_freq_day_hour <- table(format(td$hour2,"%d-%b-%Y %H:%M")) 

und bekam folgende Zählungen pro Stunde als Beispiel:

   1     2     
27-Dec-2015 04:00 27-Dec-2015 20:00 
0

die Sie interessieren, ist es ein spezielles Format für Daten, um Zeichen konvertieren und tritt nach dem Schnitt, so dass es nicht mit den Sollbruchstellen in Konflikt geraten. (Zumindest nicht, wenn ich es getestet mit Ihrem Code oben.

td$hour <- as.Date.character(cut(td$datetime, breaks = "hour"))

ich nicht bekommen, was ich dachte, ich würde diese (nie geschnitten Zeit bekommen verwenden, bevor auf diese Weise nach oben), aber es funktionierte ohne Fehler oder NA und es erscheint inline mit dem, was Ihr Code oben erzeugt wird, wenn kopiert und eingefügt.

Termine & Zeiten die nervigste zu Chaos mit in R .... ich hoffe, das hilft!

+0

Vielen Dank, aber, sorry, das hat nicht für mich funktioniert. Hier ist, was ich getan habe, falls ich nicht verstanden prop.td $ hour <- as.Date.character (cut (td $ datetime, bricht = "Stunde")) dann t_freq_day_hour <- Tabelle (Format (td $ Stunde2, "% d-% b-% Y% H:% M")). Die Datumszeit ist posix dh: $ datetime: POSIXlt, Format: "2015-12-31 13:54:00" "2015-12-30 12:41:00" "2015-12-30 07:14:00" " – maric

+0

Ich bin mir ziemlich sicher, dass ich dir nicht gefolgt bin wie du die Daten nach den Schnitten benutzt hast, weshalb es nicht funktioniert hat. Als ich sah, wie Marics Antwort deine gewünschte Aufgabe erfüllte, scheiterte meine, weil ich nicht versuchte, dieselbe Antwort zu geben. Ich entschuldige mich, dass ich nicht verstanden habe, was Sie wollten. – sconfluentus

+0

Alles gut, schätze deine Bemühungen. Ich habe es gefunden, indem ich ein paar Foren durchsucht habe. Sie haben sich nicht geirrt, dass das Date ein Chaos ist. – maric

Verwandte Themen