将时间 1:23 的数字 123 转换为毫秒

convert number 123 which is a time 1:23 into msec

我正在将 excel 电子表格读入数据框。时间被编码为没有标点符号的数字,因此 123 表示 1:23(1 分 23 秒),23 表示 23 秒,524 表示 5:24 等

所以,这个数字是数据框中的一列。我想计算一个将这些数字转换为毫秒的新列。我尝试了很多不同的东西,例如这个函数:

# function to convert time into msecseconds
toMSec <- function(x){
a = as.numeric(str_sub(as.character(x), -2, -1))*1000
b = as.numeric(str_sub(as.character(x), -4, -3))*1000*60
if (any(is.na(b))){ b = 0}
y = a+b

# return the correct number of msec
return(y)

}

但是函数的 b 部分失败了,我只得到了秒部分的答案。我似乎 运行 遇到了需要矢量化答案的问题,因此我可以将该函数应用于整列数字。

如果我得到你所要求的正确:

toMSec<- function(x) (x%/%100*60+x%%100)*1000

解释:toMSec 取数字 mmss,使用 %/%(商)得到分钟,乘以 60 得到秒,然后加上余数(%% - 模)得到秒。整个事情乘以 1000 得到毫秒。