時系列があり、開始、終了、および頻度を保持しながら、時系列として保持しながらサブセット化します。
たとえば、時系列があるとします。
> 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))
}
これを改善する方法や、よりクリーンな方法についてお聞きしたいのですが。特に、開始と終了をハードコーディングする方法が好きではありません。むしろ、ユーザーが任意のブール条件を指定できるようにします。