我想读一个文件fread从data.table具有与“YYYY-MM-DD”格式的日期列。默认情况下,fread将列读取为chr。但是,我希望将列设置为Date,与应用时获得的方式相同as.Date。
我尝试使用
dt[,starttime.date := as.Date(starttime.date)]
Run Code Online (Sandbox Code Playgroud)
但是运行需要很长时间(我大约有4300万行)。
根据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)