我需要将多种格式的日期字符串转换为有效日期。

例如

dates <- c("01-01-2017","02-01-2017","12-01-2016","20160901","20161001", "20161101")

> as.Date(dates, format=c("%m-%d-%Y","%Y%m%d"))
[1] "2017-01-01" NA           "2016-12-01" "2016-09-01" NA           "2016-11-01"


两个日期显示为NA

最佳答案

这几乎是我为anytime包编写的:

R> dates <- c("01-01-2017","02-01-2017","12-01-2016","20160901","20161001",
+             "20161101")
R> library(anytime)
R> anydate(dates)
[1] "2017-01-01" "2017-02-01" "2016-12-01" "2016-09-01"
[5] "2016-10-01" "2016-11-01"
R>


可靠地解析任何理智的输入,而没有明确的格式或原点或其他线路噪声。

话虽这么说,不是从今年开始就采用ISO风格会带来潜在的麻烦,因此02-03-2017可能是2月3日或3月2日。请帮帮忙,并尝试将输入限制为ISO日期,至少是ISO订单YYYYMMDD。

07-24 09:52
查看更多