as.Date() 如何将完整写入的日期转换为 ISO 8601?

How can as.Date() convert fully written dates into ISO 8601?

我目前有一个日期向量,格式如下:

a <- c("Wednesday 26th May 2021","Thursday 27th May 2021")

我已尝试使用以下方法将其纳入 ISO 8601:

as.Date(a, "%I %d%S %F %Y")

但我不是 100% 确定日期的语法。

如有任何想法,我们将不胜感激!

您可以删除日期后缀并使用 as.Date -

#Added an extra date that does not have th as prefix.
a <- c("Wednesday 26th May 2021","Thursday 27th May 2021", 
       'Tuesday 1st June 2021', 'Monday 31st May 2021')

as.Date(sub('(?<=\d)(th|rd|st|nd)', '', a, perl = TRUE), '%A %d %b %Y')
#[1] "2021-05-26" "2021-05-27" "2021-06-01" "2021-05-31"

阅读 ?strptime 了解不同的格式规范。


如果您对包开放 lubridate::dmy 直接工作。

lubridate::dmy(a)
#[1] "2021-05-26" "2021-05-27" "2021-06-01" "2021-05-31"