我在理解如何在lubridate中使用guess_formats函数时遇到麻烦。我有一些未知的日期/格式顺序的日期向量。我想将它们转换为Date对象(或至少转换尽可能多的对象)。以下代码是我尝试过的:

library(lubridate)
sampleDates <- c("4/6/2004","4/6/2004","4/6/2004","4/7/2004",
        "4/6/2004","4/7/2004","2014-06-28","2014-06-30","2014-07-12",
        "2014-07-29","2014-07-29","2014-08-12")
formats <- guess_formats(sampleDates, c("Ymd", "mdY"))
dates <- as.Date(sampleDates, format=formats)


这给出了所有NA。

这显然只是一个简短的例子。在实际情况下,我不知道各种格式的分散位置,也不会100%确定只有%m /%d /%Y和%Y-%m-%d。有人可以让我知道A.在此示例中如何使用guess_formats或B.在lubridate / base R中是否有更适合使用的东西,希望没有大量的正则表达式。谢谢!

编辑:
我也尝试过parse_date_time。我不了解此示例的以下作品:

parse_date_time(sampleDates,
            orders = c("Ymd", "mdY"),
            locale = "eng")


但这不是:

parse_date_time(sampleDates,
            orders = c("mdY", "Ydm"),
            locale = "eng")


在我实际的数据集中,我将不知道格式化的顺序,这对于该功能似乎很重要。

双重编辑:Dur,好的,我看到在第一个parse_date_time示例中有Ymd,在第二个parse_date_time示例中有Ydm。

最佳答案

无需调用guess_formats只需使用parse_date_time即可:

 parse_date_time(sampleDates, c("Ymd", "mdY"))

 [1] "2004-04-06 UTC" "2004-04-06 UTC" "2004-04-06 UTC" "2004-04-07 UTC" "2004-04-06 UTC"
 [6] "2004-04-07 UTC" "2014-06-28 UTC" "2014-06-30 UTC" "2014-07-12 UTC" "2014-07-29 UTC"
[11] "2014-07-29 UTC" "2014-08-12 UTC"


在内部它将调用guess_formats

关于r - guess_formats + R + lubridate,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26064292/

10-12 20:06