将时间转换为小数秒

时间:2017-03-10 14:22:05

标签: r time

我有一个变量,它是一个时间列表

t <- c("00:01:09.25", "00:01:25.24")

我想将它们转换为小数秒,以便它是数字的,我可以在t和另一个变量之间进行关联。如果将t转换为POXITlc对象,我可以对t进行减法或其他操作,但如果我将POXITlc对象与连续变量关联,则会弹出错误:x不是数字向量。

这就是我想将t转换为小数秒的原因:
00:01:09.25 = 01 * 60 * 100 + 09 * 100 + 25 = 6925

2 个答案:

答案 0 :(得分:1)

使用函数strsplit基于“:”

进行拆分
x<-"00:01:09.25"
y<-as.numeric(unlist(strsplit(x,":")))
y[1]*60*60*100+y[2]*60*100+y[3]*100 #desired output

使用lapply将其应用于字符串向量:

t <- c("00:01:09.25", "00:01:25.24")
unlist(lapply(strsplit(t,":"), function(x) as.numeric(x[1])*60*60*100+
as.numeric(x[2])*60*100+as.numeric(x[3])*100))

答案 1 :(得分:1)

我们可以使用lubridate

library(lubridate)
100*period_to_seconds(hms(t))
#[1] 6925 8524