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

时间:2017-10-26 10:08:35

标签: r datetime strptime

嗨:)我有一个data.frame列,其中包含两种格式的日期。这是一个简短的例子:

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

       dates
1 3/31/2016
2 01.12.2015

使用nice函数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)?

此致

1 个答案:

答案 0 :(得分:1)

您可以使用anytime包。

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

请注意anydate中的参数必须是矢量,因此只需选择coloumn dates

或使用lubridate

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