这可能是个愚蠢的问题,但我找不到任何相关内容。
我有一个代表秒数的数值。如何将其转换为MM:SS
例如
我的号码是96
代表MM:SS应该是01:36。
感谢任何帮助。
答案 0 :(得分:9)
%/%
(integer division)和%%
(modulo)运营商是您的朋友:
x <- 96
paste(x %/% 60, x %% 60, sep = ":")
给出了
> paste(x %/% 60, x %% 60, sep = ":")
[1] "1:36"
这是一个功能:
d2ms <- function(x) {
paste(x %/% 60, x %% 60, sep = ":")
}
> xx <- c(120, 96, 45, 30)
> d2ms(xx)
[1] "2:0" "1:36" "0:45" "0:30"
这表明我们需要一些帮助来获得您需要的格式;请参阅?sprint
了解使用前导0等格式化数字[作为字符]的方法:
d2ms <- function(x) {
sprintf("%02d:%02d", x %/%60, x %% 60)
}
> d2ms(xx)
[1] "02:00" "01:36" "00:45" "00:30"
请注意,上面字符串中的:
是文字,%xxy
位是接下来两个参数中指定的值的格式,并包含要填充的零数的格式详细信息(即使用零填充,直到数字使用两位数。)此用法的模板是:
%[flag][width]specifier
,
我们在这里使用:
0
作为标志---填充0
s 2
,我们需要MM或SS d
(也可能是i
)您是否需要,取决于您的最终用例。
这些操作符对于这些操作非常有用;另一个例子是将度,分,秒表示法转换为空间坐标的十进制度。
答案 1 :(得分:8)
尝试:
x<-96
sprintf("%02d:%02d",x%/%60,x%%60)
#[1] "01:36"