Tôi có một chuỗi thời gian và tôi muốn đặt nó trong khi giữ nó như một chuỗi thời gian, bảo toàn bắt đầu, kết thúc và tần suất.
Ví dụ: giả sử tôi có chuỗi thời gian:
> 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
Bây giờ tôi sẽ đặt nó:
> qs[time(qs) >= 2010 & time(qs) < 2011]
[1] 104 105 106 107
Lưu ý rằng tôi đã nhận được kết quả chính xác, nhưng tôi đã mất "kết thúc" từ chuỗi thời gian (cụ thể là bắt đầu, kết thúc, tần suất.)
Tôi đang tìm kiếm một chức năng cho việc này. Không tập hợp một chuỗi thời gian là một kịch bản phổ biến? Vì tôi chưa tìm thấy cái nào, đây là một chức năng tôi đã viết:
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))
}
Tôi muốn nghe về những cải tiến hoặc cách sạch hơn để làm điều này. Cụ thể, tôi không thích cách tôi bắt đầu và kết thúc mã hóa cứng. Tôi muốn để người dùng chỉ định một điều kiện boolean tùy ý.