У меня есть временной ряд, и я хочу его поднастроить, сохранив его как временной ряд, сохранив начало, конец и частоту.
Например, допустим, у меня есть временной ряд:
> qs <- ts(101:110, start=c(2009, 2), frequency=4)
> qs
Qtr1 Qtr2 Qtr3 Qtr4
2009 101 102 103
2010 104 105 106 107
2011 108 109 110
Теперь я сделаю это:
> qs[time(qs) >= 2010 & time(qs) < 2011]
[1] 104 105 106 107
Обратите внимание, что я получил правильные результаты, но я потерял «обертки» из временного ряда (а именно начало, конец, частота).
Я ищу функцию для этого. Не является ли подмножество временных рядов распространенным сценарием? Так как я еще не нашел, вот функция, которую я написал:
subset.ts <- function(data, start, end) {
ks <- which(time(data) >= start & time(data) < end)
vec <- data[ks]
ts(vec, start=start(data) + c(0, ks[1] - 1), frequency=frequency(data))
}
Я хотел бы услышать об улучшениях или более чистых способах сделать это. В частности, мне не нравится, как я жестко программирую начало и конец. Я бы предпочел, чтобы пользователь указал произвольное логическое условие.
r
time-series
Дэвид Дж.
источник
источник
Также полезно, если вы объединяете несколько временных рядов и не хотите, чтобы
window
каждый из них соответствовал им,ts.union
иts.intersect
.источник