Преобразование времени из числового в формат времени в R
Я читаю данные из файла xls. По-видимому, время не в правильном формате. Это выглядит следующим образом (например)
0.3840277777777778
0.3847222222222222
0.3854166666666667
Действительно, они должны быть
09:12
09:13
09:13
Я не знаю, как преобразовать его в нужный формат. Я искал несколько потоков, и все они касаются преобразования даты (с/без времени) в нужный формат.
Может кто-нибудь дать мне какие-нибудь подсказки?
Ответы
Ответ 1
Вы можете использовать as.POSIXct после умножения числа на количество секунд в день (60 * 60 * 24)
nTime <- c(0.3840277777777778, 0.3847222222222222, 0.3854166666666667)
format(as.POSIXct((nTime) * 86400, origin = "1970-01-01", tz = "UTC"), "%H:%M")
## [1] "09:13" "09:14" "09:15"
Ответ 2
Другая опция times
от chron
library(chron)
times(nTime)
#[1] 09:13:00 09:14:00 09:15:00
Чтобы отключить секунды,
substr(times(nTime),1,5)
#[1] "09:13" "09:14" "09:15"
данные
nTime <- c(0.3840277777777778, 0.3847222222222222, 0.3854166666666667)
Ответ 3
Для людей, которые хотят иметь обратный путь: учитывая 09:13:00, получите 0.3840278
as.numeric(chron::times("09:13:00"))
По существу, идея состоит в том, что целый день равен 1, поэтому полдень (12 вечера) равен 0,5.