2017-10-12 86 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