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

R Programming - convert numeric to MM:SS

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

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

例如

我的号码是96

在MM:SS中表示应该是01:36.

感谢任何帮助。

尝试:

x<-96
sprintf("%02d:%02d",x%/%60,x%%60)
#[1] "01:36"

%/% (integer division) and %% (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 作为标志 --- 用 0s
  • 填充
  • 宽度为 2,我们要 MM 或 SS
  • 整数说明符是 d(也可能是 i

您是否需要它取决于您的最终用例。

这些运算符对于这类操作非常有用;另一个例子是将空间坐标的度、分、秒表示法转换为十进制度数。