R data.table fread - 读取列为Date

时间:2015-03-19 09:00:07

标签: r data.table

我想阅读fread中来自data.table的文件,该文件的列日期为“YYYY-MM-DD”。默认情况下,fread会将列读为chr。但是,我希望将列设为Date,与应用as.Date时的方式相同。

我尝试过使用

dt[,starttime.date := as.Date(starttime.date)]

但运行需要很长时间(我有大约4300万行)。

1 个答案:

答案 0 :(得分:4)

根据fread documentation的建议,使用fasttime包的速度比as.Dateas.IDate快约100倍:

library(data.table)
library(fasttime)

dt[,starttime.date := fastPOSIXct(starttime.date)]

基准测试结果:

library(microbenchmark)
library(fasttime)
DT <- data.table(start_date = paste(sample(1900:2018, 100000, replace = T), 
                                    sample(1:12, 100000, replace = T),
                                    sample(1:28, 100000, replace = T),
                                    sep = "-"))
microbenchmark(
  as.Date(DT$start_date),
  as.IDate(DT$start_date),
  fastPOSIXct(DT$start_date)
)

> Unit: milliseconds
>                        expr    mean 
>      as.Date(DT$start_date)  383.89
>     as.IDate(DT$start_date)  405.89
>  fastPOSIXct(DT$start_date)    4.59