r - 在 R 中将字符串转换为日期的最快方法
问题描述
我想以字符串形式(例如:“09/20/2019”)在R
.
正在做
a = "09/20/2019"
a <- as.Date(a, "%m/%d/%Y")
似乎有点慢。有没有更快的方法来实现这种转换?
(尝试了这个fasttime
包,但它需要以下顺序:year, month, day
......因此原始字符串需要一些进一步的操作)
解决方案
使用查找表方法 (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
推荐阅读
- java - 运行自定义 Gradle 测试任务时未定义空手道
- java - 在 Java 中使用 Link 实现队列
- r - lmer 参考输出解释
- eslint - VSCode ESLint 如何使用全局 eslint-plugin-react 和 eslint-plugin-react-native
- python - raw_input 语句中的 Python 重启线程
- c# - 如何为属性描述传递参数
- reactjs - React 自定义钩子导致无限循环
- c# - 不能在泛型类中使用参数,因为不能转换为基类,尽管所有约束似乎都很好
- ruby-on-rails - 使用失败的路由请求记录 IP,NGINX/Rails
- react-native - React-Navigation 和安装错误和首次使用