2015-09-05 60 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大寫格式,使差異。