【问题标题】:Using R to convert factor to date使用 R 将因子转换为日期
【发布时间】:2015-09-05 17:16:34
【问题描述】:

我知道这个问题已经被反复问过,很抱歉,但我只是看不到错误...... 尝试将一个因素转换为如下日期,无论我尝试了什么,我仍然得到 N/A。

> class(cd$StartDate)
[1] "factor"
> head(cd)
  StartDate      Phase Cancer
1   Dec-89   Phase  2  breast
2   Jul-89   Phase  2  breast
3   Sep-92   Phase  1  breast

> cd$dates <- as.Date(cd$StartDate, format = "%b-%y)

> head(cd)
  StartDate      Phase Cancer dates
1   Dec-89   Phase  2  breast  <NA>
2   Jul-89   Phase  2  breast  <NA>
3   Sep-92   Phase  1  breast  <NA>

【问题讨论】:

    标签: r


    【解决方案1】:

    我认为您需要提供一个 day 值才能进行转换:

    cd$dates <- as.Date(
      paste0(as.character(cd$StartDate), "-01"), 
      format = "%b-%y-%d")
    ##
    R> str(cd)
    #'data.frame':  3 obs. of  4 variables:
    #$ StartDate: Factor w/ 3 levels "Dec-89","Jul-89",..: 1 2 3
    #$ Phase    : chr  "Phase_2" "Phase_2" "Phase_1"
    #$ Cancer   : chr  "breast" "breast" "breast"
    #$ dates    : Date, format: "1989-12-01" "1989-07-01" "1992-09-01"
    

    数据:

    cd <- read.table(
      text = "  StartDate      Phase Cancer
    1   Dec-89   Phase_2  breast
    2   Jul-89   Phase_2  breast
    3   Sep-92   Phase_1  breast",
      header = TRUE,
      stringsAsFactors = FALSE)
    ##
    cd$StartDate <- as.factor(cd$StartDate)
    

    【讨论】:

    • 当您将我的代码完全复制并粘贴到您的会话中时 - 例如将-%d 添加到格式参数后,它不起作用?
    • 不,我是从我的测试文件中运行它,所以我在日期条目前后发现了错误的空格,我已经删除了这些,现在它可以工作了。谢谢!
    【解决方案2】:

    我也试过了:

    as.Date(as.character(cd$StartDate),format = "%m/%d/%y")
    

    但低于一个作品

     a<-as.character(cd$StartDate)
     b<-as.Date.character(a, format = "%m/%d/%Y")
     b
    

    格式中大写的Y 会有所不同。

    【讨论】:

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