gpt4 book ai didi

regex - 如何最有效地将 "01 Jan 2014"的字符串转换为 POSIXct,即 "2014-01-01"yyyy-mm-dd

转载 作者:行者123 更新时间:2023-12-05 00:59:17 25 4
gpt4 key购买 nike

我已经对这里的问题有了部分答案,据我所知: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()
基准

我决定使用 micro benchmark 用一些经验数据更新这个答案。包和 lubridate使用 fasttime 的选项。
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

关于regex - 如何最有效地将 "01 Jan 2014"的字符串转换为 POSIXct,即 "2014-01-01"yyyy-mm-dd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30938562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com