在R中,如何转换具有附加后缀的日期的日期的字符串表示?

时间:2015-12-16 07:27:26

标签: r string date

我正在将我正在从网页抓取的数据转换为数据表以供进一步处理。麻烦的是我无法弄清楚如何转换日期。它们有两种格式之一(我将使用示例,因为我不确定如何以一种明确的方式为您推广):

"November 11th" "December 1st (2015)"

我已阅读as.Dateas.POSIXctas.POSIXlt的文档,我无法编写一直处理这些案例的格式字符串。尾随后缀总是似乎残留格式字符串,尤其是在后一种情况下。幸运的是,我认为我可以一直预测我将在任何时候获得哪个版本,所以如果我必须编写两个不同的会话函数/格式字符串,这很酷。

1 个答案:

答案 0 :(得分:2)

您可以subregex一起使用来捕获关键字/数字,并结合as.Date转换为日期:

对于第一种格式,请将2015添加为年份:

as.Date(paste0(sub("(\\w+)\\s(\\d+).+", "\\1-\\2", d1), "-2015"), format="%B-%d-%Y")
[1] "2015-11-11"

对于第二种格式

as.Date(sub("(\\w+)\\s(\\d+).+\\s\\((\\d{4})\\).*", "\\1-\\2-\\3", d2), format="%B-%d-%Y")
[1] "2015-12-01"

数据:

d1 <- "November 11th"
d2 <- "December 1st (2015)"