将时间以小时为单位从数字转换为 HMS 格式

ron*_*zen 4 format time datetime r

如何将表示时间(以小时为单位)的数字从数字格式转换为 HMS 格式。

例如:

8.0 -> 08:00:00
0.5 -> 00:30:00
0.25 -> 00:15:00
Run Code Online (Sandbox Code Playgroud)

akr*_*run 5

转换为秒,利用seconds_to_periodsfromlubridate并将其更改为hms

hms::hms(lubridate::seconds_to_period(floor(v1 * 60 *60)))
#08:00:00
#00:30:00
#00:15:00
Run Code Online (Sandbox Code Playgroud)

数据

v1 <- c(8, 0.5, 0.25)
Run Code Online (Sandbox Code Playgroud)


Tho*_*ing 5

这是一个基本的 R 选项

h <- x%/%1
m <- floor(x%%1 * 60)
s <- round((x%%1 * 60)%%1*60)
sprintf("%02d:%02d:%02d",h,m,s)
Run Code Online (Sandbox Code Playgroud)

以至于

> sprintf("%02d:%02d:%02d",h,m,s)
[1] "08:00:00" "00:30:00" "00:15:00" "03:45:22"
Run Code Online (Sandbox Code Playgroud)

数据

x <- c(8.0,0.5,0.25,3.756)
Run Code Online (Sandbox Code Playgroud)


Ron*_*hah 5

另一个基本 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"
Run Code Online (Sandbox Code Playgroud)