我很难理解如何在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")在我的实际数据集中,我将不知道格式化的顺序,这似乎对此函数很重要。
Double编辑: Dur,好的,我看到我在第一个parse_date_time示例中使用了Ymd,在second...carry上有Ydm。
发布于 2014-09-26 16:48:08
不需要调用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。
发布于 2022-02-04 18:02:37
在匹配日期格式方面做得很好的一个通用选项是任何时间包:
library(anytime)
anydate(sampleDates)
[1] "2004-04-06" "2004-04-06" "2004-04-06" "2004-04-07" "2004-04-06" "2004-04-07" "2014-06-28"
[8] "2014-06-30" "2014-07-12" "2014-07-29" "2014-07-29" "2014-08-12"https://stackoverflow.com/questions/26064292
复制相似问题