【发布时间】:2018-10-10 05:20:21
【问题描述】:
我有这种格式的日期:
4 月 12 日, 12 月 12 日, 2014 年 7 月 30 日, 3 月 16 日, 16 年 2 月 29 日, 5 月 17 日, 2014 年 11 月 20 日,
R 将其视为因子变量。我希望它把它当作一个日期来对待,如果缺少日期,它应该用 1 日替换它。
提前谢谢你!
【问题讨论】:
我有这种格式的日期:
4 月 12 日, 12 月 12 日, 2014 年 7 月 30 日, 3 月 16 日, 16 年 2 月 29 日, 5 月 17 日, 2014 年 11 月 20 日,
R 将其视为因子变量。我希望它把它当作一个日期来对待,如果缺少日期,它应该用 1 日替换它。
提前谢谢你!
【问题讨论】:
我认为我们需要单独解析它们,因为格式不一致。我们首先解析具有日期、月份和年份组件的那些。然后通过在其中添加“01”来解析返回NA 的那些。
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"))
【讨论】:
当前三个字符不在系统向量中时,有条件地附加一个“01-”,month.abb
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"
【讨论】: