2015-04-23 13 views
8

Mam zestaw danych z czasem w formacie znaku. Próbuję ukryć to z 12-godzinnego formatu do 24. Zrobiłem trochę wyszukiwania, ale wszystko, co znalazłem, wydaje się zakładać, że znaki są już w formacie 24-godzinnym. Oto przykład czasów, w których pracuję.Konwertuj 12 godzin znaków do 24 godzin

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

Odpowiedz

12

To powinno działać:

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" 

Jeśli chcesz tylko czasy:

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

To świetnie, dzięki! Znalazłem strptime podczas wyszukiwania, ale nie mogłem wymyślić, jak wykluczyć datę, ponieważ już mam ją w innej zmiennej. _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 - wpisać szybciej niż ja. Do początkującego programu startowego - zobacz, jak CDT i EDT są automatycznie wypełniane w oparciu o strefę czasową - może to być potencjalnie problem podczas konwersji w ciągu 1 godziny od zmiany dnia

+1

Używam 2 palców (byłem już czysty), ale pokonuję, ponieważ mam funkcje w moim .Rprofile do adnotowania (hashe) i wcięcia 4 spacje, co oszczędza czas przy dodawaniu kodu. Więc oszukuję lepiej, nie piszę szybciej :-) –

+0

Co sądzisz o CDT/EDT/PDT itp.? –

+0

Dzięki za słowo ostrzeżenia strefy czasowej RE! –

Powiązane problemy