我正在将 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 得到秒,然后加上余数(%% - modulo)得到秒。整个事情乘以 1000 得到毫秒。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句