Разделите дату и сохраните время
Многие люди спрашивают, как разделить время и сохранить дату, но как насчет другого пути? Дано:
myDateTime <- "11/02/2014 14:22:45"
Я бы хотел:
myTime
[1] "14:22:45"
Часовой пояс не нужен.
Я уже пробовал (из других ответов)
as.POSIXct(substr(myDateTime, 12,19),format="%H:%M:%S")
[1] "2013-04-13 14:22:45 NZST"
Цель состоит в том, чтобы анализировать события, записанные в течение нескольких дней только по времени суток.
Спасибо
Edit:
Оказывается, нет чистого "временного" объекта, поэтому каждый раз также должна быть дата.
В конце я использовал
as.POSIXct(as.numeric(as.POSIXct(myDateTime)) %% 86400, origin = "2000-01-01")
а не решение символа, потому что мне нужно сделать арифметику по результатам. Это решение аналогично моему первоначальному, за исключением того, что в этом случае можно контролировать постоянную дату - "2000-01-01", тогда как моя попытка просто использовала текущую дату во время выполнения.
Ответы
Ответ 1
Если время в течение дня GMT полезно для вашей проблемы, вы можете получить это с помощью %%
, оператора остатка, взяв остаток по модулю 86400
(количество секунд в день).
stamps <- c("2013-04-12 19:00:00", "2010-04-01 19:00:01", "2018-06-18 19:00:02")
as.numeric(as.POSIXct(stamps)) %% 86400
## [1] 0 1 2
Ответ 2
Я думаю, что вы ищете функцию format
.
(x <- strptime(myDateTime, format="%d/%m/%Y %H:%M:%S"))
#[1] "2014-02-11 14:22:45"
format(x, "%H:%M:%S")
#[1] "14:22:45"
Это character
, а не "время", но будет работать с чем-то вроде aggregate
, если это то, что вы подразумеваете под "анализом событий, записанных в течение нескольких дней только по времени суток".