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

时间:2018-03-22 15:00:27

标签: r time milliseconds

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

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

# 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部分失败了,我只得到秒部分的答案。我似乎遇到了需要有一个矢量化答案的问题,所以我可以将该函数应用于整个数字列。

1 个答案:

答案 0 :(得分:2)

如果我得到了你正确要求的东西:

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

说明:toMSec取数字mmss,使用%/%(商)获取分钟,使用60来获得秒数,然后将余数(%% - modulo)加到其中以获得秒数。整个事情乘以1000得到毫秒。