我有一个十进制格式的时间: 22,13
以小时为单位,我想在 R 中将其表示为 HH:MM
。我的意思是,22:08
(贬值秒)
任何人都可以帮助我吗?
最佳答案
将字符串扫描为数字形式的 s
,将其除以 24,以便我们可以将其转换为 times
类(因为 times
需要一天的一小部分),将其四舍五入为分钟并删除尾随的 :00
library(chron)
x <- c("22,13", "5,20") # test data
s <- scan(text = x, dec = ",", quiet = TRUE)
sub(":00$", "", round(times(s/24), "min")) ##
## [1] "22:08" "05:12"
如果您更喜欢截断秒而不是四舍五入到最接近的分钟,那么在标记为 ## 的行中将
round
替换为 trunc
或将整行替换为:format(as.chron(s/24), format = "%H:%M") # truncate
转换回来
如果
y
是标记为 ## 的行的结果,则它们分别转换回 times
类和小时数。我们在最后一行使用了 round(..., 2)
来获得与原始输入相同的位数,但如果这不重要,可以省略它。y <- c("22:08", "05:12")
tt <- times(paste0(y, ":00"))
tt
## [1] 22:08:00 05:12:00
round(24 * as.numeric(tt), 2)
## [1] 22.13 5.20
关于r - 如何在 HH :MM 中表示十进制时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60675851/