2011-10-11 28 views
7

में अंतिम एन आइटम का चयन करना मैं एक समय श्रृंखला के अंतिम n आइटम चुनना चाहता हूं। मैं [ ऑपरेटर का उपयोग कर सकते हैं, लेकिन मैं डेटा की समय श्रृंखला गुण खो:एक समय श्रृंखला

data <- ts(1:10, frequency = 4, start = c(1959, 2)) 
data[(length(data)-4):length(data)] 

मैं करने के लिए समय श्रृंखला का श्रेय फिर से लागू करने के लिए एक आवरण समारोह में लिखा है, लेकिन अगर वहाँ था एक और अधिक मैं सोच रहा था ऐसा करने के लिए सुरुचिपूर्ण तरीका?

lastN <- function(data,n) { 
    out <- data[(length(data)-n+1):length(data)] 
    ts(out, end=end(data), frequency=frequency(data)) 
} 
data 
lastN(data,5) 

[ ऑपरेटर एक समय श्रृंखला वस्तु क्यों नहीं लौटाता है?

उत्तर

7

मुझे लगता है कि यह नहीं है कि आप क्या देख रहे हैं, लेकिन आप zoo वस्तुओं के साथ हमेशा की तरह निकालने ([) सिंटैक्स का उपयोग कर सकते हैं: तो फिर

library(zoo) 
data_zoo <- as.zoo(data) 
last_zoo <- data_zoo[(length(data_zoo)-4):length(data_zoo)] 

, यदि आप चाहें तो एक ts वापस करने के लिए परिवर्तित वस्तु:

as.ts(last_zoo) 
+6

या बस 'पूंछ (data_zoo, 5) 'का उपयोग करें। –

+0

यह अभी के लिए काम करता है। मैं सीधे 'ts' ऑब्जेक्ट्स को इंडेक्स करने में सक्षम होना पसंद करूंगा, लेकिन चिड़ियाघर से/में कनवर्ट करने से बस 2 अतिरिक्त कदम जोड़े जाते हैं, और यह आसानी से उपयोग के दृष्टिकोण से लायक लगता है। – Zach

+1

@ यहोशूउलिच के महान सुझाव के साथ यह बहुत साफ हो जाता है, और एक एक लाइनर पठनीय हो सकता है। 'lastN <-tail (as.zoo (डेटा), एन)' –

7

[ एक ts वस्तु वापस नहीं करता है क्योंकि उदाहरण के लिए data[c(1,5,6)] कार्य नहीं करेगा। इसके बजाय वहाँ window() समारोह है:

window(data,start=tsp(data)[2]-4/frequency(data)) 

तो अपने lastN समारोह के संशोधन

tail.ts <- function(data,n) { 
    data <- as.ts(data) 
    window(data,start=tsp(data)[2]-(n-1)/frequency(data)) 
} 

फिर tail(data,5) तुम क्या चाहते हो जाएगा होगा।

+0

क्या 'tail.ts' विधि लिखना इतना आसान होगा? –

+0

अच्छा विचार। मैंने फ़ंक्शन नाम को 'tail.ts' में बदल दिया है। –

+0

किसी कारण से, पूंछ (डेटा, 100) 'अभी भी मेरे लिए एक संख्यात्मक में रखता है। मैंने खिड़की को 'as.ts()' में लपेट लिया और यह काम करता है। – metakermit

संबंधित मुद्दे