2016-04-01 18 views
1

Ich muss eine Zeit in Zeichen "01:15:55 AM" in Zeit umwandeln. Ich dachte an die Verwendung der Chron-Bibliothek, aber ich bin mir nicht sicher, wie das Format zu machen ist.konvertieren Zeichen in 12H Zeitformat in R

chron(times = "01:15:55 AM", format = "%I:%M:%S %p") 
Error in parse.format(format) : unrecognized format %I:%M:%S %p 

Irgendwelche Ideen? Ich bin glücklich, andere Bibliotheken in R

+0

Zeit <-strptime ("01.15.55 ", format ="% I:% M:% S% p ") konvertiert es in ein POSIXlt-Objekt – Dave2e

Antwort

3

Eine Option ist strptime zu verwenden, um zu analysieren, und dann format das Ergebnis, so dass Sie es in ein schönes chron::times Objekt machen können:

library(chron) 
times(format(strptime("01:15:55 PM", format = "%I:%M:%S %p"), "%H:%M:%S")) 
# [1] 13:15:55 
1

Die kanonische Art des Umgangs mit Datum und Uhrzeit Objekten zu versuchen, wird mit den POSIX Funktionen, wie zum Beispiel:

> (time.POSIX<-strptime("01:15:55 AM", format = "%I:%M:%S %p")) 
[1] "2016-03-31 01:15:55 BRT" 
> class(time.POSIX) 
[1] "POSIXlt" "POSIXt" 

Die strptime Funktion, zusammen mit allen anderen, die arbeiten Mit POSIX-Daten wie format (zum Drucken) akzeptieren Sie die von Ihnen verwendete Formatzeichenfolge. Das Problem hier ist, dass diese Daten keine Zeit per se sind, sondern ein Datum und eine Uhrzeit, und der Datumsteil wird implizit als "heute" erstellt. So können Sie diese Zeitobjekte an einem festen Referenzdatum, zB 2000-01-01, erstellen.

Auf der anderen Seite, wenn Sie das Chron-Paket verwenden möchten ... sie sind nicht kompatibel mit diesen Format-Spezifikationen. chron Manuell gibt nur m, d, y, h, m und s an.

Sie müssen möglicherweise einen Wrapper schreiben, der AM/PM versteht und behebt.

1
testtime<-("2013-07-21 02:00:01 PM") 
library(lubridate) 
ymd_hms(testtime) 
[1] "2013-07-21 14:00:01 UTC"