Репликация последовательности дат - PullRequest
0 голосов
/ 18 ноября 2018

Я хочу создать последовательность дат следующим образом:

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 голосов
/ 18 ноября 2018

Вы можете создать функцию, которая будет варьировать вашу генерацию даты для вас.Обратите внимание, что я преобразовал выходные данные в 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
0 голосов
/ 18 ноября 2018

Использование 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...