日期序列复制

时间:2018-11-18 14:36:47

标签: r

我要创建一个日期序列,如下所示:

firstyear <- seq(as.Date('2000-01-01'),by='8 day',length=46)

然后在日期序列中附加第二年,例如“第一年”,直到2017年。

最后,该序列包含46 * 18个元素,如下图所示:

2000-01-01
2000-01-09
...
2000-12-26
2001-01-01
...
2001-12-26
...
2017-12-26

如何紧凑地生成此日期序列?

2 个答案:

答案 0 :(得分:1)

使用sapply

a=c(2000:2017)
yourlist=as.Date(sapply(a,function(x) seq(as.Date(paste0(as.character(x),'-01-01')),by='8 day',length=46)),origin='1970-01-01')

答案 1 :(得分:0)

您可以创建一个函数,该函数将为您改变日期的产生。请注意,我已经将输出转换为data.frame以将日期保留为“本机”形式。

yearSequence <- function(x) {
  data.frame(variable = seq(as.Date(sprintf('%s-01-01', x)), by = '8 day', length = 46))
}

您可以将功能应用于所需的年份。

out <- sapply(2000:2017, FUN = yearSequence, simplify = FALSE)

将结果组合为data.frame。

result <- do.call(rbind, out)

> head(result)
    variable
1 2000-01-01
2 2000-01-09
3 2000-01-17
4 2000-01-25
5 2000-02-02
6 2000-02-10
> tail(result)
      variable
823 2017-11-17
824 2017-11-25
825 2017-12-03
826 2017-12-11
827 2017-12-19
828 2017-12-27