R data.table fread-读取列为日期 [英] R data.table fread - read column as Date

查看:98
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆