有没有办法从整数8:46:01
创建84601
而不在R中使用模运算?类似于使用其他语言掩码的格式:format(84600, "HHMMSS")
?否则需要模数偏差和一些凌乱的公式
答案 0 :(得分:5)
format(strptime("084601","%H%M%S"),"%H:%M:%S")
有效,但你必须确保你有一个两位数的小时,例如:
x <- "84601"
在任何5位数字字符串前面加零:
xx <- gsub("([0-9]{5})","0\\1",x)
(或者,正如@Frank在评论中所说,sprintf("%06d", x)
将适用于整数......)
转换:
format(strptime(xx,"%H%M%S"),"%H:%M:%S")
(如果您不是format()
,您将获得一个日期时间字符串,其中填写当前日期...)
答案 1 :(得分:3)
只需将其视为字符串:
y <- gsub('(.?.)(..)(..)', '\\1:\\2:\\3', x)
y
# [1] "8:46:01"
或者使用正则表达式:
format
或y <- format(x, big.mark = ':', big.interval = 2L)
y
# [1] "8:46:01"
(格式编号,而不是时间):
chron::times
如果您需要实际的时间班,chron::times(y)
# [1] 08:46:01
很不错:
{{1}}