【问题标题】:r - I need to transform a number to a dater - 我需要将数字转换为日期
【发布时间】:2014-10-09 18:30:40
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • 你检查过类(df$xx)吗?日期对象是整数,as.character(df$xx) 将确保它们以日期格式直观地打印出来

标签: r date if-statement


【解决方案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) 
}

【讨论】:

  • 糟糕!将原点从 01-01-1960 更改为 01-01-1970。我忘记了 R 是如何定义日期起源的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-21
  • 2022-01-27
  • 2018-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多