【问题标题】:guess_formats + R + lubridateguess_formats + R + lubridate
【发布时间】:2014-11-21 17:51:37
【问题描述】:

我无法理解如何在 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,在第二个示例中有 Ydm...继续。

【问题讨论】:

    标签: r lubridate


    【解决方案1】:

    无需致电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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      • 2013-05-31
      相关资源
      最近更新 更多