2017-10-12 75 views
2

我已經編寫了一個函數,用於生成從曆元時間戳(以毫秒爲單位)生成的年,月和日列的矩陣。然而,這個功能非常慢,對於我擁有的700多萬行數據來說,它是無用的。解析時間戳需要很長時間

有沒有辦法將毫秒時間戳解析爲比這更快的年,月和日?

timestamp_to_ymd <- function(data){ 
    result <- matrix(nrow = length(data), ncol = 3) 

    pb <- txtProgressBar(min = 0, max = length(data), style = 3) 
    for (i in 1:length(data)){ 
    posixtime <- as.POSIXlt(data[i]/1000, origin="1970-01-01") 

    result[i,1] <- posixtime$year + 1900 
    result[i,2] <- posixtime$mon + 1 
    result[i,3] <- posixtime$mday 
    setTxtProgressBar(pb, i) 
    } 
    close(pb) 
    return(result) 
} 

生成TESTDATA:

testdata <- 1483225200000:1483228200000 
+0

請結算包的特定像'zoo'時間序列數據, 'xts'。 – TUSHAr

回答

3

你並不需要一個循環,這些功能可以處理向量:

result <- matrix(nrow = length(data), ncol = 3) 
posixtime <- as.POSIXlt(data/1000, origin="1970-01-01") 
result[,1] <- posixtime$year + 1900 
result[,2] <- posixtime$mon + 1 
result[,3] <- posixtime$mday 
result 
+0

哦,是的,他非常好,他在幾秒鐘內完成了功能! – Milan