R 如何根据位数将数值转换为小时和分钟
我有一个向量,它包含最接近半小时的时间R 如何根据位数将数值转换为小时和分钟,r,datetime-conversion,R,Datetime Conversion,我有一个向量,它包含最接近半小时的时间 x <- c(30,200,2200,2300) 您可以使用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" x似乎需要将x中的字符数调整为格式字符串“%H%M”的至少3个字符,以理解在所有情况下都
x <- c(30,200,2200,2300)
您可以使用
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"
x似乎需要将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"
tmp如果希望以字符串结尾,可以使用一些正则表达式绕过strtime()
:
sub("(\\d{2})", "\\1:", sprintf("%04d", x))
[1] "00:30" "02:00" "22:00" "23:00"
另一种使用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"
x@R06不客气!考虑选择一个答案。这就是我们在堆栈溢出时表示感谢的方式。从你拥有+15声誉的那一刻起,你也可以。目前与预期输出不匹配。
sub("(\\d{2})", "\\1:", sprintf("%04d", x))
[1] "00:30" "02:00" "22:00" "23:00"
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"