我想阅读fread
中来自data.table
的文件,该文件的列日期为“YYYY-MM-DD”。默认情况下,fread
会将列读为chr
。但是,我希望将列设为Date
,与应用as.Date
时的方式相同。
我尝试过使用
dt[,starttime.date := as.Date(starttime.date)]
但运行需要很长时间(我有大约4300万行)。
答案 0 :(得分:4)
根据fread documentation的建议,使用fasttime
包的速度比as.Date
或as.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