2017-10-31 1 views
0

Meine Daten einen Start- und Endzeit Stempel wie folgt aus:Aggregate Datum und Uhrzeit in R

200401010000 200401010030 
200401010030 200401010100 
200401010100 200401010130 and so on... 

Ich versuche, diese Felder in% YYYY% MM% DD% HH% MM-Format zu konvertieren mit lubridate und as.POSIXct aber ich bekomme nur NAs. Jede Hilfe wird geschätzt. Mein Ziel ist es, die Daten für jeden Monat zu aggregieren. Der Code, den ich bisher verwendet habe, ist wie folgt:

start_time = as.POSIXct(dat$TIMESTAMP_START, format = "%YYYY%MM%DD %HH%MM",origin = "2004-01-01 00:00", tz="EDT") 
stop_time = as.POSIXct(dat$TIMESTAMP_END, format = "%YYYY%MM%DD%HH%MM",origin = "2004-01-01 00:30", tz="EDT") 
dat$interval <- interval(start_time, stop_time) 

Antwort

0

Zwei Probleme kann ich sehen:

  1. Wenn Sie lubridate bereits verwenden, sollten Sie wahrscheinlich verwenden, um die Funktion ymd_hm(), die ist einfach sauberer IMO.

  2. Sie können diese Funktion nicht auf einen Vektor anwenden (von dem ich annehme, dass dat$TIMESTAMP_START und dat$TIMESTAMP_END sind); Um dies zu tun, können Sie verwenden:

    start_time <- sapply(dat$TIMESTAMP_START, ymd_hm()) 
    end_time <- sapply(dat$TIMESTAMP_END, ymd_hm()) 
    

    Das wird die Funktion auf jedes Element in Ihrem Vektor anwenden.