Bir zaman serisine sahibim ve başlangıç, son ve sıklığı koruyarak bir zaman dizisi olarak tutarken alt kümesini belirlemek istiyorum.
Örneğin, bir zaman serim olduğunu varsayalım:
> 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
Şimdi onu alt edeceğim:
> qs[time(qs) >= 2010 & time(qs) < 2011]
[1] 104 105 106 107
Doğru sonuçları aldığımı fark et, ancak zaman serilerinden "tamamlamayı" kaybettim (yani başlangıç, bitiş, sıklık).
Bunun için bir işlev arıyorum. Bir zaman serisini alt kümelemek ortak bir senaryodur mu? Henüz bir tane bulamadığım için yazdığım bir işlev:
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))
}
Bunu yapmak için gelişmeler veya daha temiz yollar hakkında duymak istiyorum. Özellikle, ben zor kodlama başlangıç ve bitiş şeklinden hoşlanmıyorum. Kullanıcının keyfi bir boolean koşulu belirtmesine izin vermeyi tercih ederim.