2016-10-17 38 views
0

我读的CSV文件存储如下的R - 转换日期时间为字符到秒(数字)

"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

你可以试试[fasttime](https://cran.r-project.org/web/packages/fasttime/fasttime.pdf)这个包的速度非常快:) – stefan8888

回答

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 

我为T1T2获得的值分别6秒0.5秒。所以lubridate执行速度快12倍左右。

+0

在lubridate包中是time_length函数吗?我在运行此代码时出现错误 –

+0

是的,在CRAN手册的第56页[此链接](https://cran.r-project.org/web/packages/lubridate/lubridate.pdf)。错误是什么? – thepule

+0

我得到这个错误 - 错误:找不到函数“time_length”。奇怪的 –

相关问题