Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何根据位数将数值转换为小时和分钟_R_Datetime Conversion - Fatal编程技术网

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"