嗨:)我的 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
是否有更复杂的方法可以立即进行此转换(从日期到 date12)?
问候
最佳答案
您可以使用随时
包。
library(anytime)
anytime::addFormats("%d.%m.%Y")
anydate(D$dates)
请注意,anydate
中的参数必须是向量,因此只需选择列dates
。
或者使用lubridate
parse_date_time(D$dates, c("mdy", "dmy"))
关于r - 一次转换不同的日期时间格式(strptime),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46951572/