2014-10-09 57 views
0

我需要根據存儲在字段中的數字添加日曆日期。r - 我需要將數字轉換爲日期

final_muestra1<-data.frame(prior_day1=c(1:17)) 

我嘗試了以下功能:

gg<-function(d) { 
    august <- (d < 8) 
    d[august] <- as.Date("2014-08-01") + (d[august]-1) 
    d[!august] <- as.Date("2014-07-01") + (d[!august]-1) 
    return(d) 
} 



final_muestra1$xx<-gg(final_muestra1$prior_day1) 

,但我得到:

prior_day1 xx 
1   1 16283 
2   2 16284 
3   3 16285 
4   4 16286 
5   5 16287 
6   6 16288 
7   7 16289 
8   8 16259 
9   9 16260 

當我需要得到:

prior_day1 xx 
    1   1 2014-08-01 
    2   2 2014-08-02 
    3   3 2014-08-03 

..... 
    7   7 2014-07-07 
    8   8 2014-07-08 

謝謝!

+0

你有沒有檢查過類(df $ xx)?日期對象是整數,as.character(df $ xx)將確保它們以日期格式直觀地打印它們 – DMT 2014-10-09 18:42:19

回答

1

在返回對象之前,您可能需要將d重新定義爲Date對象。您只將d矢量的一部分一次定義爲Date對象。

gg<-function(d) { 
    august <- (d < 8) 
    d[august] <- as.Date("2014-08-01") + (d[august]-1) 
    d[!august] <- as.Date("2014-07-01") + (d[!august]-1) 
    d <- as.Date(as.numeric(d),format="%Y-%m-%d",origin=as.Date("1970-01-01")) 
    return(d) 
} 
+0

糟糕!從01-01-1960將原點更改爲01-01-1970。我忘了R如何定義日期的起源。 – 2014-10-09 18:50:26