一次转换不同的日期时间格式(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"))
您好 :) 我的 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"))