2017-08-05 4 views
-1

Ich habe Datum und Uhrzeit Spalte. Das Hauptproblem ist, dass das Jahr (2016) ist nicht vollständig in der CSV-Datei und OCT ist nicht numerisch.Ändern des Datumsformat mit Monat in Buchstaben

Date  Time   rtime 
20-Oct-16 14:02:00  20-Oct-16 14:02:00 
20-Oct-16 14:02:03  20-Oct-16 14:02:03 

Ich möchte eine weitere Spalte namens newtime mit diesem Format

newtime 
2016-10-20 14:02:00 
2016-10-20 14:02:03 

Vorschläge, wie der Monat in einem regulären Zahlenformat zu machen und machen 16 in 2016.

+0

Verwendung dmy_hms (df $ rtime) beispielsweise verwenden können dmy_hms ("20-Okt-16 14:02:00") –

Antwort

2

Mit lubridate Sie don Es muss nicht angegeben werden, ob der Monat mit dem Namen (Okt) oder als Dezimalzahl (10) oder mit dem Jahr 2016 oder 16 kommt. Lubridate-Funktionen analysieren heterogene Datumsformate. Zum Beispiel:

library(lubridate) 
df$newtime = dmy_hms(df$rtime) 

     Date  Time    rtime    newtime 
1 20-Oct-16 14:02:00 20-Oct-16 14:02:00 2016-10-20 14:02:00 
2 20-Oct-16 14:02:03 20-Oct-16 14:02:03 2016-10-20 14:02:03 

Wenn Sie strptime dann müssen Sie das Format definieren. Siehe? Strptime.

1

Wir verwenden strptime

strptime("20-Oct-16 14:02:00", "%d-%b-%y %H:%M:%S") 

Oder dmy_hms von lubridate

lubridate::dmy_hms("20-Oct-16 14:02:00") 
1

Wir auch as.POSIXct mit format

as.POSIXct("20-Oct-16 14:02:00", format = "%d-%b-%y %H:%M:%S") 
#[1] "2016-10-20 14:02:00 IST"