我正在将我正在从网页抓取的数据转换为数据表以供进一步处理。麻烦的是我无法弄清楚如何转换日期。它们有两种格式之一(我将使用示例,因为我不确定如何以一种明确的方式为您推广):
"November 11th"
"December 1st (2015)"
我已阅读as.Date
,as.POSIXct
和as.POSIXlt
的文档,我无法编写一直处理这些案例的格式字符串。尾随后缀总是似乎残留格式字符串,尤其是在后一种情况下。幸运的是,我认为我可以一直预测我将在任何时候获得哪个版本,所以如果我必须编写两个不同的会话函数/格式字符串,这很酷。
答案 0 :(得分:2)
您可以sub
与regex
一起使用来捕获关键字/数字,并结合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)"