R - 将日期时间转换为秒数(数字)

时间:2016-10-17 09:52:51

标签: r date

我正在从csv文件中读取数据时间值,如下所示

"2013-08-01 00:10:46"
"2013-08-01 00:10:51"
"2013-08-01 00:10:53"
"2013-08-01 00:11:04"
"2013-08-01 00:11:06"

阅读时它被读作字符,我想将其转换为1970-01-01的秒数。我可以使用下面的代码行来实现它,但转换需要很长时间。有没有更好更快的方法来实现这个目标

rstarttime  <- as.numeric(as.POSIXct(rdata$starttime,origin = "1970-01-01"))

1 个答案:

答案 0 :(得分:0)

您可以使用lubridate

根据以下测试,它可以快12倍左右:

library(lubridate)
ttt <- c(
    "2013-08-01 00:10:46",
    "2013-08-01 00:10:51",
    "2013-08-01 00:10:53",
    "2013-08-01 00:11:04",
    "2013-08-01 00:11:06"
)

t <- Sys.time()
q <- as.numeric(as.POSIXct(rep(ttt,50000),origin = "1970-01-01"))
t1 <- Sys.time() - t

t <- Sys.time()
q <- time_length(interval(ymd("1970-01-01"), rep(ttt, 50000)), "second")
t2 <- Sys.time() - t

我为 t1 t2 获得的值分别为6秒和0.5秒。因此lubridate的执行速度提高了约12倍。