Итак, у меня очень простой вопрос. Допустим, у нас есть несколько промежутков дат в объекте временного ряда, и я хочу заполнить эти пробелы произвольным значением. Например, скажем, у нас есть:
i <- c(seq.Date(from = as.Date("2015-01-01", format = "%Y-%m-%d"), to = as.Date("2016-01-01", format = "%Y-%m-%d"), by = "month"),
seq.Date(from = as.Date("2017-01-01", format = "%Y-%m-%d"), to = as.Date("2018-01-01", format = "%Y-%m-%d"),by = "month"))
ts <- xts(rep(0,length(i)), order.by = i)
[,1]
2015-01-01 0
2015-02-01 0
2015-03-01 0
2015-04-01 0
2015-05-01 0
2015-06-01 0
2015-07-01 0
2015-08-01 0
2015-09-01 0
2015-10-01 0
2015-11-01 0
2015-12-01 0
2016-01-01 0
2017-01-01 0
2017-02-01 0
2017-03-01 0
2017-04-01 0
2017-05-01 0
2017-06-01 0
2017-07-01 0
2017-08-01 0
2017-09-01 0
2017-10-01 0
2017-11-01 0
2017-12-01 0
2018-01-01 0
То, чего я хочу достичь, это «заполнить» временной ряд ts
для всех месяцев между двумя произвольными датами, то есть start.date
и end.date
, с помощью 1
. Есть предложения?
Моя попытка:
if(index(ts)[1] > start.date){
len.aux <- length(seq(from = start.date, to = index(ts)[1] %m-% months(1), by = "month"))
ts <- c(xts(rep(1, len.aux), order.by = seq.Date(from = start.date, to = index(ts)[1] %m-% months(1), by = "month")), ts)
}
if(index(ts)[length(ts)] < end.date){
len.aux <- length(seq(from = index(ts)[length(ts)] %m+% months(1), to = end.date, by = "month"))
ts <- c(ts, xts(rep(1, len.aux), order.by = seq.Date(from = index(ts)[length(ts)] %m+% months(1), to = end.date, by = "month")))
}
Однако, это только заполняет пробелы для «хвостов» ряда и не заполняет промежутки между ними.
Спасибо за помощь!
Обратите внимание, что это только минимальный рабочий пример моей проблемы