首页 > 解决方案 > 在 R 中将字符串转换为日期的最快方法

问题描述

我想以字符串形式(例如:“09/20/2019”)在R.

正在做

a = "09/20/2019"       
a <- as.Date(a, "%m/%d/%Y")

似乎有点慢。有没有更快的方法来实现这种转换?

(尝试了这个fasttime包,但它需要以下顺序:year, month, day......因此原始字符串需要一些进一步的操作)

标签: rfasttime

解决方案


使用查找表方法 (1) 比as.Date此示例数据快 38 倍。对于这个示例数据,方法 (2) 仍然快 18 倍,如果您没有生成d. 当然,您的数据细节会影响实际实现的加速。

# test data
set.seed(123)
d <- format(as.Date("2000-01-01") + 1:100, "%m/%d/%Y")
dd <- sample(d, 1000000, replace = TRUE)

# 1 - lookup table
system.time(as.Date(d, "%m/%d/%Y")[match(dd, d)])
##    user  system elapsed 
##    0.06    0.02    0.07 

# 2 - table lookup generating u on the fly instead of d
system.time({u <- unique(dd); as.Date(u, "%m/%d/%Y")[match(dd, u)] })
## user  system elapsed 
## 0.13    0.03    0.15 

# 3 - as.Date
system.time(as.Date(dd, "%m/%d/%Y"))
##    user  system elapsed 
##    2.61    0.07    2.67 

推荐阅读