R data.table fread - 读取列作为日期

标签 r data.table

我想用 fread 读取文件来自 data.table有一列带有“YYYY-MM-DD”格式的日期。默认情况下,fread将该列读取为 chr .但是,我想将该列设为 Date ,与我在申请 as.Date 时获得的方式相同.

我试过用

dt[,starttime.date := as.Date(starttime.date)]

但运行需要很长时间(我有大约 4300 万行)。

最佳答案

使用 fasttime包,如 fread documentation 中所建议的, 比 as.Date 快大约 100 倍或 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 - 读取列作为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29140416/

相关文章:

r - Class() 在 R 中返回多个多个类名

r - 使用多个分隔符将一列拆分为两列时,将多余的内容合并到左侧

r - 通过条件计算因子 [r] 内的平均值

r - 通过表格 y 轴上的组按组提取前 10 个值

r - 使用一个数据集上一列中的日期设置一年范围(向前),以查找与 R 中 id 匹配的不同数据集上的日期

r - 有什么方法可以提高 for 循环实现的查找和重新编码问题的性能(例如向量化)?

r - 使用循环计算两个数据矩阵的误差

r - 通过将函数应用于 r 中所有可能的变量组合来生成矩阵

r - 基于分隔符将快速 data.table 列拆分为多行

r - 展开 data.table 中的日期