2016-10-17 73 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」。奇怪的 –

相關問題