2015-09-05 61 views
1

我知道这个问题已被重复询问,道歉,但我只是看不到错误... 试图将一个因子转换为下面的日期,无论我是什么,已经尝试我仍然得到N/A。使用R转换因子到日期

> 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> 

回答

3

我认为你需要提供一个值的转换工作:

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) 
+0

将代码完全复制并粘贴到会话中时 - 例如,将' - %d'添加到format参数中,它不起作用? – nrussell

+1

不,我从我的测试文件中运行它,所以我在日期条目前后发现了错误的空格,我已经删除了这些文件,现在它可以正常工作。谢谢! – Betty

0

我也试过:

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大写格式,使差异。