将任何字符串转换为 R 中的日期

Convert any string to date in R

是否有一些函数会尝试从字符串中猜测日期?我发现 lubridate:: parse_date_time(),这听起来可以完成这项工作,但您需要指定您期望的确切格式。如果您所有的字符串都是类似格式,这很好,但如果它是任何可能的人工输入数据,那就不行了。我正在寻找类似 Excel 的行为,其中类似于日期的任何内容都会自动转换为日期。

例如c("April 11, 2020", "Apr 11", "4/11/20", "04-11", "April 11, 1 p.m.", "04/11/2020, 1:00pm")应该都是2020-04-11。我只需要创建一个精心设计的正则表达式还是有一些更智能的方法?

根据 @jpmam1 的评论,您似乎可以使用 lubridate::parse_date_time 和无限数量的模式。如果您指定的足够多,它将匹配任何内容。

mydates <- c("April 11, 2020", "Apr 11", "4/11/20", "04-11", "April 11, 1 p.m.", "04/11/2020, 1:00pm")
parse_date_time(mydates,c("mdy","mdY","Bdy","bd","md","Bdh","mdYHM"))
#[1] "2020-04-11 00:00:00 UTC" "0000-04-11 00:00:00 UTC" "2020-04-11 00:00:00 UTC" "0000-04-11 00:00:00 UTC" "2020-04-11 01:00:00 UTC"
#[6] "2020-04-11 01:00:00 UTC"

它将无年日期与 0000 相匹配,您可以事后解决这个问题。