2016-07-29 12 views
0

Ich habe eine Zeitstempelspalte, die ich in ein POSIXct umwandele. Das Problem ist, dass es zwei verschiedene Formate in derselben Spalte gibt. Wenn ich also die üblichere Konvertierung verwende, wird die andere in NA konvertiert.Zwei Zeitstempelformate in R

MC$Date  
12/1/15 22:00  
12/1/15 23:00  
12/2/15  
12/2/15 1:00  
12/2/15 2:00 

ich den folgenden Code verwenden, um eine POSIXct zu konvertieren:

MC$Date <- as.POSIXct(MC$Date, tz='MST', format = '%m/%d/%Y %H:%M') 

Die Ergebnisse:

MC$Date  
15-12-01 22:00:00  
15-12-01 23:00:00  
NA  
15-12-02 01:00:00  
15-12-02 02:00:00 

ich einen logischen Vektor verwendet haben versucht, das Problem zu identifizieren dann zu korrigieren, aber kann keine einfache Lösung finden.

Antwort

0

Ich denke, die Logik-Vektor-Ansatz könnte funktionieren. Vielleicht im Tandem mit einem temporären Vektor, um die analysierten Daten zu halten, ohne die nicht geparsten zu überlisten. Etwas wie folgt aus:

dates <- as.POSIXct(MC$Date, tz='MST', format = '%m/%d/%Y %H:%M') 
dates[is.na(dates)] <- as.POSIXct(MC[is.na(dates),], tz='MST', format = '%m/%d/%Y') 
MC$Date <- dates 
4

Das lubridate Paket wurde entwickelt, um mit Situationen wie diese zu behandeln.

dt <- c(
"12/1/15 22:00", 
"12/1/15 23:00", 
"12/2/15", 
"12/2/15 1:00", 
"12/2/15 2:00" 
) 
dt 
[1] "12/1/15 22:00" "12/1/15 23:00" "12/2/15"  "12/2/15 1:00" "12/2/15 2:00" 
lubridate::mdy_hm(dt, truncated = 2) 
[1] "2015-12-01 22:00:00 UTC" "2015-12-01 23:00:00 UTC" "2015-12-02 00:00:00 UTC" 
[4] "2015-12-02 01:00:00 UTC" "2015-12-02 02:00:00 UTC" 

Der truncated Parameter gibt an, wie viele Formate fehlt.

Sie können den Parameter tz hinzufügen, um anzugeben, mit welcher Zeitzone das Datum analysiert werden soll, wenn UTC nicht geeignet ist.

0

Da alle Ihre Datumsangaben durch ein Leerzeichen zwischen Datum und Uhrzeit getrennt sind, können Sie mit strsplit nur den Datumsteil extrahieren.

extractDate <- function(x){ strsplit(x, split = " ")[[1]][1] } 
MC$Date <- sapply(MC$Date, extractDate) 

Dann gehen Sie vor und konvertieren, wie Sie möchten, ohne sich über die Zeit an der Art und Weise immer besorgniserregend.