मेरे पास एक समय श्रृंखला है और मैं इसे एक समय श्रृंखला के रूप में रखते हुए, प्रारंभ, अंत और आवृत्ति को संरक्षित करते हुए इसे कम करना चाहता हूं।
उदाहरण के लिए, मान लें कि मेरे पास एक समय श्रृंखला है:
> 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))
}
मैं सुधार या क्लीनर तरीके के बारे में सुनना चाहूंगा। विशेष रूप से, मुझे शुरू-अंत में हार्ड-कोडिंग करने का तरीका पसंद नहीं है। मैं इसके बजाय उपयोगकर्ता को एक मनमाना बूलियन स्थिति निर्दिष्ट करने देता हूं।