我有一个向量,其中包含最近半个小时的时间
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"
答案 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"