我正在从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"))
答案 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倍。