2015-04-23 19 views
8

Ich habe einen Datensatz mit der Uhrzeit im Zeichenformat. Ich versuche, dies von einem 12-Stunden-Format auf 24 zu reduzieren. Ich habe etwas gesucht, aber alles, was ich gefunden habe, scheint davon auszugehen, dass die Charaktere bereits im 24-Stunden-Format sind. Hier ist ein Beispiel für die Zeit, mit der ich arbeite.12 Stunden Zeichenzeit in 24 Stunden umwandeln

times <- c("9:06 AM", "4:42 PM", "3:05 PM", "12:00 PM", "3:38 AM") 

Antwort

12

Dies sollte funktionieren:

times <- c("9:06 AM", "4:42 PM", "3:05 PM", "12:00 PM", "3:38 AM") 

strptime(times, "%I:%M %p") 

## [1] "2015-04-23 09:06:00 EDT" "2015-04-23 16:42:00 EDT" 
## [3] "2015-04-23 15:05:00 EDT" "2015-04-23 12:00:00 EDT" 
## [5] "2015-04-23 03:38:00 EDT" 

Wenn Sie nur die Zeiten wollen:

format(strptime(times, "%I:%M %p"), format="%H:%M:%S") 
## [1] "09:06:00" "16:42:00" "15:05:00" "12:00:00" "03:38:00" 
+1

Das ist großartig, danke! Ich habe während der Suche zwar Zeit gefunden, konnte aber nicht herausfinden, wie ich das Datum ausschließen kann, da ich es bereits in einer anderen Variablen habe. _hat tip_ –

3
times <- c("9:06 AM", "4:42 PM", "3:05 PM", "12:00 PM", "3:38 AM") 
print(as.POSIXct(times, format='%I:%M %p')) 

[1] "2015-04-23 09:06:00 CDT" "2015-04-23 16:42:00 CDT" "2015-04-23 15:05:00 CDT" "2015-04-23 12:00:00 CDT" 
[5] "2015-04-23 03:38:00 CDT" 

@Tyler - Sie tippen schneller als ich. Zum Themenstarter - bitte sehen Sie, wie der CDT und der EDT basierend auf Ihrer Zeitzone automatisch ausgefüllt werden - dies könnte möglicherweise ein Problem bei der Umrechnung von Zeiten innerhalb von 1 Stunde sein

+1

Ich benutze 2 Finger (ich bin sauber geworden), aber ich überwinde, weil ich Funktionen in meinem .Rprofile zu kommentieren (Hashes) und 4 Leerzeichen einrücken, die Zeit beim Hinzufügen von Code spart. Also checke ich besser, tippe nicht schneller :-) –

+0

Was denkst du über CDT/EDT/PDT etc Dings? –

+0

Danke für das Wort der Warnung RE Zeitzone! –

Verwandte Themen