Dav*_*RGP 4 regex r date posixct
我已经对这里的问题有了部分答案,据我所知,我已经理解了:如何在data.table中最有效地重构字符串以实现快速时间.
但是,任务已经扩展,需要处理原始格式的变化.
我有一个大型数据集,其中包含以下形式的字符类日期列:
01 Jan 2014
Run Code Online (Sandbox Code Playgroud)
要么:
dd MMM yyyy
Run Code Online (Sandbox Code Playgroud)
我想重组fastPOSIXct哪个只能按POSIXct顺序接受字符输入:
yyyy-mm-dd
Run Code Online (Sandbox Code Playgroud)
上面链接的问题指出,一种有效的方法是使用正则表达式然后提供输出fast.time.在这里我需要扩展它以包括一个方法来理解每月缩写,转换为数字,然后重新排列?我该怎么做?我知道有month.abb一个内置的常量.我应该使用它,还是有更聪明的方法?
怎么样使用lubridate:
x <- "01 Jan 2014"
x
[1] "01 Jan 2014"
library(lubridate)
dmy(x)
[1] "2014-01-01 UTC"
Run Code Online (Sandbox Code Playgroud)
当然,lubridate函数也接受tz参数.要查看可接受参数的完整列表,请参阅OlsonNames()
我决定用一些经验数据更新这个答案,使用micro benchmark包和lubridate使用fasstime 的选项.
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
Run Code Online (Sandbox Code Playgroud)