R data.table fread - 将列读取为日期

R data.table fread - read column as Date

我想从 data.table 中读取一个带有 fread 的文件,其中有一列的日期格式为 "YYYY-MM-DD"。默认情况下,fread 将列读取为 chr。但是,我希望该列为 Date,就像我在应用 as.Date.

时获得的一样

我试过用

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

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

使用 fasttime 包,如 fread documentation 中所建议,比 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