我的日期格式如下:
12月4日, 12月12日, 2014年7月30日, 16年3月, 2016年2月29日, 2017年5月, 14年11月20日,
R将其视为因子变量。我希望它像日期一样对待它,并且无论日期中缺少哪一天,都应将其替换为1st。
提前谢谢!
答案 0 :(得分:1)
我认为我们需要分别解析它们,因为格式不一致。我们首先解析具有日期,月份和年份组成部分的那些。然后,通过向返回NA
的对象添加“ 01”来对其进行解析。
new_x <- as.Date(x, "%d-%b-%y")
new_x[is.na(new_x)] <- as.Date(paste0("01-", x[is.na(new_x)]), "%d-%b-%y")
new_x
#[1] "2012-04-01" "2012-12-01" "2014-07-30" "2016-03-01" "2016-02-29" "2017-05-01"
#[7] "2014-11-20"
在?strptime
上了解有关格式的更多信息。
数据
x <-factor(c("Apr-12", "Dec-12", "30-Jul-14", "Mar-16", "29-Feb-16",
"May-17","20-Nov-14"))
答案 1 :(得分:1)
如果前三个字符不在系统向量month.abb
中,则有条件地附加一个“ 01-”
as.Date( ifelse( substr(dtvec,1,3) %in% month.abb, paste0("01-",dtvec), dtvec) ,"%d-%b-%y")
[1] "2012-04-01" "2012-12-01" "2014-07-30" "2016-03-01" "2016-02-29" "2017-05-01" "2014-11-20"