【问题标题】:Convert factor(non-uniform) to date in R?将因子(非均匀)转换为R中的日期?
【发布时间】: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 日替换它。

提前谢谢你!

【问题讨论】:

    标签: r date


    【解决方案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"))
    

    【讨论】:

      【解决方案2】:

      当前三个字符不在系统向量中时,有条件地附加一个“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"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-04
        • 1970-01-01
        • 1970-01-01
        • 2014-06-14
        • 2020-09-07
        • 2020-10-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多