2011-09-27 12 views
9

पर नियमित विश्लेषण मेरे पास अनियमित समय श्रृंखला है (xtsR में) कि मैं कुछ समय-खिड़की को लागू करना चाहता हूं। उदाहरण के लिए, निम्नलिखित की तरह एक समय श्रृंखला को देखते हुए, मैं जैसे कितने टिप्पणियों प्रत्येक असतत 3 घंटे की खिड़की में हैं बातें गणना करने के लिए, 2009-09-22 00:00:00 से शुरू करना चाहते हैं:अनियमित समय श्रृंखला

library(lubridate) 
s <- xts(c("OK", "Fail", "Service", "OK", "Service", "OK"), 
     ymd_hms(c("2009-09-22 07:43:30", "2009-10-01 03:50:30", 
        "2009-10-01 08:45:00", "2009-10-01 09:48:15", 
        "2009-11-11 10:30:30", "2009-11-11 11:12:45"))) 

मैं जाहिरा तौर पर उपयोग नहीं कर सकते period.apply() या split() ऐसा करने के लिए, क्योंकि वे बिना किसी अवलोकन के अवधि को छोड़ देंगे, और मैं इसे एक प्रारंभिक समय नहीं दे सकता।

सरल गिनती समस्या (हालांकि, ज़ाहिर है, मेरा असली कार्यों और प्रत्येक सेगमेंट और अधिक जटिल कर रहे हैं!) कुछ इस तरह है कि अगर मैं एक समय में 3 दिन के लिए एकत्रित किया जाएगा के लिए मेरे वांछित आउटपुट:

2009-09-22 1 
2009-09-25 0 
2009-09-28 0 
2009-10-01 3 
2009-10-04 0 
2009-10-07 0 
2009-10-10 0 
2009-10-13 0 
2009-10-16 0 
2009-10-19 0 
2009-10-22 0 
2009-10-25 0 
2009-10-28 0 
2009-10-31 0 
2009-11-03 0 
2009-11-06 0 
2009-11-09 2 

किसी भी मार्गदर्शन के लिए धन्यवाद।

उत्तर

11

align.time का उपयोग s की अनुक्रमणिका को अपनी इच्छित अवधि में रखने के लिए करें। फिर प्रत्येक 3 घंटे की विंडो की लंबाई खोजने के लिए period.apply का उपयोग करें। फिर इसे एक खाली xts ऑब्जेक्ट के साथ मर्ज करें जिसमें आपके इच्छित सभी इंडेक्स वैल्यू हैं।

# align index into 3-hour blocks 
a <- align.time(s, n=60*60*3) 
# find the number of obs in each block 
count <- period.apply(a, endpoints(a, "hours", 3), length) 
# create an empty xts object with the desired index 
e <- xts(,seq(start(a),end(a),by="3 hours")) 
# merge the counts with the empty object and fill with zeros 
out <- merge(e,count,fill=0) 
+0

जो मैं ढूंढ रहा हूं वह नहीं करता - मुझे मूल प्रश्न में और विवरण जोड़ने दें। –

+0

शायद 'विलय()' विचार मुझे वांछित है - मेरे वांछित अंतराल अंतराल के साथ अनुक्रम बनाने के लिए, फिर अनुक्रम में विलय करें? –

+0

@ केनविल्लियम्स: आप सही रास्ते पर हैं। मैंने अपना जवाब अपडेट कर दिया है ... –

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