正则表达式 – 如何最有效地将字符串“01 Jan 2014”转换为POSIX
发布时间:2020-12-14 05:57:11 所属栏目:百科 来源:网络整理
导读:我已经对这个问题有了部分答案,据我所知,据我所知: How to most efficiently restructure a character string for fasttime in data.table 但是,任务已经扩展,需要处理原始格式的变化. 我有一个大型数据集,其中包含以下形式的字符类日期列: 01 Jan 2014 要
我已经对这个问题有了部分答案,据我所知,据我所知:
How to most efficiently restructure a character string for fasttime in data.table
但是,任务已经扩展,需要处理原始格式的变化. 我有一个大型数据集,其中包含以下形式的字符类日期列: 01 Jan 2014 要么: dd MMM yyyy 我想重组以提供给fastPOSIXct,它只接受POSIXct顺序中的字符输入: yyyy-mm-dd 上面链接的问题指出,一种有效的方法是使用正则表达式,然后将输出提供给fast.time.在这里我需要扩展它以包括一个方法来理解每月缩写,转换为数字,然后重新排列?我该怎么做?我知道有一个month.abb作为内置常量.我应该使用它,还是有更聪明的方法? 解决方法
使用lubridate怎么样:
x <- "01 Jan 2014" x [1] "01 Jan 2014" library(lubridate) dmy(x) [1] "2014-01-01 UTC" 当然,lubridate函数也接受tz参数.要查看可接受参数的完整列表,请参阅OlsonNames() 基准 我决定用一些经验数据更新这个答案,使用微基准包和使用fasstime的lubridate选项. library(micro benchmark) microbenchmark(dmy(x),times = 10000) Unit: milliseconds expr min lq mean median uq max neval dmy(x) 1.992639 2.02567 2.142212 2.041514 2.07153 39.1384 10000 options(lubridate.fasttime = T) microbenchmark(dmy(x),times = 10000) Unit: milliseconds expr min lq mean median uq max neval dmy(x) 1.993326 2.02488 2.136748 2.039467 2.065326 163.2008 10000 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |