我编写了一个函数来制作一个矩阵,其中包含从纪元时间戳(以毫秒为单位)生成的年,月和日列。然而,这个功能非常慢,以至于它对我拥有的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 :(得分: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