R data.table fread-读取列为日期 [英] R data.table fread - read column as Date
本文介绍了R data.table fread-读取列为日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想从 data.table
中读取具有 fread
的文件,该文件的列为 YYYY- MM-DD格式的日期。默认情况下, fread
将该列读取为 chr
。但是,我希望将列设置为 Date
,与应用 as.Date
时获得的方式相同。
I would like to read a file with fread
from data.table
that has a column with "YYYY-MM-DD" format dates. By default, fread
reads the column as chr
. However, I would like to have the column as Date
, the same way I would obtain when applying as.Date
.
我尝试使用
dt[,starttime.date := as.Date(starttime.date)]
,但是运行时间很长(我有大约4300万行)。
but it takes very long to run (I have approx. 43 million rows).
推荐答案
使用 fasttime
包,根据 fread文档中的建议,比 as.Date
或 as.IDate
快100倍:
Using the fasttime
package, as suggested in the fread documentation, is approximately 100x faster than as.Date
or 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
这篇关于R data.table fread-读取列为日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文