R编程 - 将数字转换为MM:SS

时间:2015-11-19 22:09:45

标签: r numeric

这可能是个愚蠢的问题,但我找不到任何相关内容。

我有一个代表秒数的数值。如何将其转换为MM:SS

例如

我的号码是96

代表MM:SS应该是01:36。

感谢任何帮助。

2 个答案:

答案 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"