如何根据数字位数将数值转换为小时和分钟

时间:2019-07-09 10:20:11

标签: r datetime-conversion

我有一个向量,其中包含最近半个小时的时间

x <- c(30,200,2200,2300)

我需要将其转换为

output <- c(00:30,02:00,22:00,23:00).

我无法转换小于4位数字的值。
请提出建议。 strptime()as.Date()为第一个元素抛出NA

我尝试了以下代码,但没有用。请建议

代码:

x <- c(30,200,2200,2300)

output <- format(strptime(x,"%H%M"),"%H:%M")
output
#[1] NA      "20:00" "22:00" "23:00"

4 个答案:

答案 0 :(得分:1)

您可以使用sprintf添加前导零。

x <- c(30, 200, 2200, 2300)
format(strptime(sprintf("%04d", x), format="%H%M"), format="%H:%M")
# [1] "00:30" "02:00" "22:00" "23:00"

答案 1 :(得分:0)

对于格式字符串x,似乎"%H%M"中的字符数需要调整为至少3个字符,以了解在所有情况下都需要一个小时。

tmp <- strptime(ifelse(nchar(x) <= 3, paste("0", x), x),"%H%M")
output <- format(tmp,"%H:%M")
output
#[1] "00:30" "02:00" "22:00" "23:00"

答案 2 :(得分:0)

如果您想以字符串结尾,则可以使用一些正则表达式绕过newtype SimExpr = SimExpr (Expr SimExpr)

strptime()

答案 3 :(得分:0)

使用formatC

的另一种方法
x <- c(30, 200, 2200, 2300)
formatC(x, width = 4, flag = "0", big.mark = ":", big.interval = 2)
#[1] "00:30" "02:00" "22:00" "23:00"