我有一个十进制格式的时间: 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/

10-12 17:55