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.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
我想从 data.table
中读取一个带有 fread
的文件,其中有一列的日期格式为 "YYYY-MM-DD"。默认情况下,fread
将列读取为 chr
。但是,我希望该列为 Date
,就像我在应用 as.Date
.
我试过用
dt[,starttime.date := as.Date(starttime.date)]
但是 运行 需要很长时间(我有大约 4300 万行)。
使用 fasttime
包,如 fread documentation 中所建议,比 as.Date
或 as.IDate
:
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