r - 我需要将数字转换为日期

时间:2014-10-09 18:30:41

标签: r date if-statement

我需要根据字段中存储的数字添加日历日期。

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

谢谢!

1 个答案:

答案 0 :(得分: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) 
}