2016-08-25 1 views
0

Ich habe Daten von der Form:Aggregieren von Daten, die von Stunde mit R

[1] "Mon Feb 01 09:11:55 +0000 2016" "Mon Feb 01 09:12:11 +0000 2016" "" 
[4] "Mon Feb 01 09:14:25 +0000 2016" "" "Mon Feb 01 09:15:40 +0000 2016" 

und ich möchte es plotten R. mit

ich eine stündliche Aufzeichnung von Zählungen so alle zwischen 9 tun wollen und 10 Uhr würden in einem Eimer gezählt und so weiter. Die Daten werden über mehrere Tage sein, aber das Datum ist nur eine Stunde unwichtig. Ich möchte vielleicht auch die Stunde auf 30 Minuten ändern. Ich habe verschiedene Dinge ausprobiert, aber ich bin ein bisschen überfordert und wäre sehr dankbar für ein paar grundlegende Schritte, um es zum Laufen zu bringen.

Ich habe versucht:

str <- strptime(dt, "%a %b %d %H:%M:%S %z %Y", tz = "GMT") 
# head(str,3) 
(dt.gmt <- as.POSIXct(str, tz = "GMT")) 
format(dt.gmt, tz = "EST", usetz = TRUE) 
hms <- format(dt.gmt , format = "%H:%M:%S") 
hms<-as.numeric(hms) 
head(hms,3) 
hms <- table(cut(hms, breaks="hour")) 

, die den Fehler verursacht:

Error in breaks + 1 : non-numeric argument to binary operator 

Ich habe versucht auch:

aggdata <-aggregate(hms, by=(hms), FUN=mean, na.rm=TRUE) 

die gibt:

Error in aggregate.data.frame(as.data.frame(x), ...) : 'by' must be a list 
+0

'hms' ein Objekt ist nicht mehr helfen kann, die von Zeit-ish Spezifikationen geschnitten werden können. Wenn Ihnen nur die Anzahl pro Stunde wichtig ist, warum nicht nur "hr <- format (dt.gmt, format ="% H ")" und "table (hr)"? – hrbrmstr

+0

Danke! Sieht das gut aus, ist es möglich, das gleiche für 20 Minuten statt Stunden zu verwenden? Und es dort eine einfache Art, es zu plotten? – schoon

+0

können Sie eine Verknüpfung zu einer Datendatei herstellen? – hrbrmstr

Antwort

0

Ok ich das gerade versucht, Kann dies Sie

dt <- c("Mon Feb 01 09:11:55 +0000 2016", "Mon Feb 01 10:12:11 +0000 
     2016","Mon Feb 01 09:21:55 +0000 2016") 
df <- data.frame('time' = dt, 
      'id' = c(1, 3, 2)) 
df$time <- as.POSIXct(gsub("^.+? | \\+\\d{4}","", df$time), 
                  format = "%B %d %X %Y") 
df$time <- as.POSIXlt(df$time) 
df$hour <- format(df$time, format = '%H') 
df 
pivot <- aggregate(df$id, by = list(df$hour), FUN = length) 
pivot 
Verwandte Themen