一次转换不同的日期时间格式(strptime)

Convert different date-time-formats at once (strptime)

您好 :) 我的 data.frame 中有一列包含两种格式的日期。这是一个简短的最小示例:

D = data.frame(dates = c("3/31/2016", "01.12.2015"))

       dates
1 3/31/2016
2 01.12.2015

使用漂亮的函数 strptime 我可以轻松获取每种格式的日期时间:

D$date1 <- strptime(D$dates, format = "%m/%d/%Y")
D$date2 <- strptime(D$dates, format = "%d.%m.%Y")

我已经解决了以下问题:

D$date12 <- do.call(pmin, c(D[c("date1","date2")], na.rm=TRUE) )

实现这个:

       dates      date1      date2     date12
1  3/31/2016 2016-03-31       <NA> 2016-03-31
2 01.12.2015       <NA> 2015-12-01 2015-12-01

是否有更复杂的方法可以同时进行这种转换(从日期到日期 12)?

此致

您可以使用 anytime 包。

library(anytime)
anytime::addFormats("%d.%m.%Y")
anydate(D$dates)

请注意,anydate 中的参数必须是矢量,因此只需 select 列 dates

或使用lubridate

parse_date_time(D$dates, c("mdy", "dmy"))