R从多种格式转换为日期

时间:2017-04-12 23:29:21

标签: r as.date

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

e.g。

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

2 个答案:

答案 0 :(得分:9)

这几乎是我写的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。

答案 1 :(得分:0)

我曾经尝试过使用图书馆,但是对于大数据却没有用。 然后,我发现此序列很有用:

df$Date2 <- format(as.Date(df$Date, format="%m/%d/%Y"), "%d/%m/%y")

df$Date2 <- as.Date(df$Date2,"%d/%m/%y")

它对我来说一直有效到“ 8/10/2005”和“ 08/13/05”。