2014-10-09 63 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