2015-04-23 2 views
8

У меня есть набор данных со временем в формате символов. Я пытаюсь скрывать это с 12-часового формата до 24. Я сделал несколько поисков, но все, что я нашел, похоже, предполагает, что персонажи уже в 24-часовом формате. Вот пример того, с чем я работаю.Преобразование 12-часовое символьное время в 24 часа

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

ответ

12

Это должно работать:

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" 

Если вы хотите только времена:

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

Это замечательно, спасибо! Я искал strptime во время поиска, но не мог понять, как исключить дату, поскольку у меня уже есть ее в другой переменной. _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 - вы типа быстрее, чем я. К теме Starter - посмотрите, как CDT и EDT автоматически заполняются на основе вашего часового пояса - это может быть потенциально проблемой при переходе времени в течение 1 часа смены дня

+1

Я использую 2 пальца (я пришел чистый), но я побеждаю, потому что у меня есть функции в моем .Rprofile для аннотации (хэши) и отступов 4 пробелов, что экономит время при добавлении кода. Поэтому я обманываю лучше, а не быстрее :-) –

+0

Что вы думаете о CDT/EDT/PDT и т. Д.? –

+0

Спасибо за слово предупреждения часовой пояс RE! –

Смежные вопросы