Как преобразовать числа, представляющие время в часах, из числового формата в HMS.
например:
8.0 -> 08:00:00 0.5 -> 00:30:00 0.25 -> 00:15:00
Вот базовая опция R
h <- x%/%1 m <- floor(x%%1 * 60) s <- round((x%%1 * 60)%%1*60) sprintf("%02d:%02d:%02d",h,m,s)
такая, что
> sprintf("%02d:%02d:%02d",h,m,s) [1] "08:00:00" "00:30:00" "00:15:00" "03:45:22"
Data
x <- c(8.0,0.5,0.25,3.756)
Другой вариант базового R:
x <- c(8, 0.5, 0.25) format(as.POSIXct(x * 3600, origin = '1970-01-01', tz = 'UTC'), '%T') #[1] "08:00:00" "00:30:00" "00:15:00"
Преобразовать в секунды, использовать seconds_to_periods из lubridate и изменить его на hms
seconds_to_periods
lubridate
hms
hms::hms(lubridate::seconds_to_period(floor(v1 * 60 *60))) #08:00:00 #00:30:00 #00:15:00
v1 <- c(8, 0.5, 0.25)