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

pal*_*czy 9 r data.table

我想读一个文件freaddata.table具有与“YYYY-MM-DD”格式的日期列。默认情况下,fread将列读取为chr。但是,我希望将列设置为Date,与应用时获得的方式相同as.Date

我尝试使用

dt[,starttime.date := as.Date(starttime.date)]
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*gge 9

根据fread文档中的fasttime建议,使用该软件包的速度比或快大约100倍:as.Dateas.IDate

library(data.table)
library(fasttime)

dt[,starttime.date := fastPOSIXct(starttime.date)]
Run Code Online (Sandbox Code Playgroud)

基准结果:

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 
Run Code Online (Sandbox Code Playgroud)