解析时间戳需要很长时间

时间:2017-10-12 12:33:11

标签: r performance

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

1 个答案:

答案 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
相关问题