我要创建一个日期序列,如下所示:
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
如何紧凑地生成此日期序列?
答案 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