Saya memiliki deret waktu dan saya ingin mengelompokkannya sambil menyimpannya sebagai deret waktu, menjaga awal, akhir, dan frekuensi.
Misalnya, katakan saya memiliki deret waktu:
> 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
Sekarang saya akan mengelompokkannya:
> qs[time(qs) >= 2010 & time(qs) < 2011]
[1] 104 105 106 107
Perhatikan bahwa saya mendapatkan hasil yang benar, tetapi saya kehilangan "pembungkus" dari deret waktu (yaitu mulai, akhir, frekuensi.)
Saya mencari fungsi untuk ini. Bukankah berlangganan rangkaian waktu adalah skenario umum? Karena saya belum menemukannya, berikut adalah fungsi yang saya tulis:
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))
}
Saya ingin mendengar tentang peningkatan atau cara yang lebih bersih untuk melakukan ini. Secara khusus, saya tidak suka cara saya memulai dan mengakhiri hard-coding. Saya lebih suka membiarkan pengguna menentukan kondisi boolean yang sewenang-wenang.