从具有内置函数的整数创建有效时间

时间:2016-04-20 19:24:33

标签: r

有没有办法从整数8:46:01创建84601而不在R中使用模运算?类似于使用其他语言掩码的格式:format(84600, "HHMMSS")?否则需要模数偏差和一些凌乱的公式

2 个答案:

答案 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}}