2012-12-19 9 views
5

मैं यह समझने की कोशिश कर रहा हूं कि xts (या चिड़ियाघर) आवेदन करने के बाद के समय के रूप में उपयोग करता है। अवधि। निम्नलिखित पर विचार करें:आवेदन के साथ पूर्ण सप्ताहों को मजबूर करना। (

> myTs = xts(1:10, as.Date(1:10, origin = '2012-12-1')) 
> apply.weekly(myTs, colSums) 
      [,1] 
2012-12-02 1 
2012-12-09 35 
2012-12-11 19 

मुझे लगता है कि '2012-12-02' का अर्थ है 2012-12-02 के अंत सप्ताह के लिए, योग 1 है "। तो मूल रूप से समय सप्ताह का अंत है।

लेकिन समस्या यह है कि "2012-12-11" के साथ है - मैं लगता क्या यह कर रहा है कह रहा है कि 11 वीं सप्ताह कि दिया गया था के अंतिम दिन है, इसलिए यह समय के रूप में दे रही है कि ।

क्या रविवार को यह निर्धारित करने के लिए मजबूर करने का कोई तरीका है जिस पर यह समाप्त होता है, भले ही उस दिन डेटा सेट में शामिल नहीं किया गया हो?

उत्तर

3

इस प्रयास करें:: मैं क्यों (शायद एक डिजाइन पसंद अद्वितीय सूचकांक प्राप्त)

जैसे आप क्या कर सकते हैं बह पता नहीं है

nextsun <- function(x) 7 * ceiling(as.numeric(x-0+4)/7) + as.Date(0-4) 
aggregate(myTs, nextsun, sum) 

जहां nextsunnextfri कोड से प्राप्त किया गया 5 (शुक्रवार के लिए) 0 (रविवार के लिए) के साथ zoo quick reference में दिया गया।

3

ये पूरे सप्ताह हैं। यह केवल आपको अंतिम अवलोकन की तारीख दिखा रहा है। ?endpoints (apply.weekly देखें, अंततः बिंदुओं के लिए एक पतली आवरण है)।

apply.weekly 
function (x, FUN, ...) 
{ 
    ep <- endpoints(x, "weeks") 
    period.apply(x, ep, FUN, ...) 
} 
<environment: namespace:xts> 

से? अंतिमबिंदुओं

समाप्ति-बिंदु में संख्यात्मक वेक्टर प्रत्येक अवधि पर द्वारा निर्दिष्ट में पिछले अवलोकन करने के लिए इसी देता है, एक शून्य के साथ वेक्टर के शुरुआत करने के लिए जोड़ा है, और के सूचकांक एक्स में अंतिम अवलोकन अंत में। पर तर्क के लिए

वैध मान में शामिल हैं: "हम" (माइक्रोसेकंड), "माइक्रोसेकंड", "एमएस" (मिलीसेकेंड), "मिलीसेकेंड" "सेकेंड" (सेकंड), "सेकंड", "मिनट" (मिनट), "मिनट", "घंटे", "दिन", "सप्ताह", "महीने", "क्वार्टर", और "वर्ष"।

आपके दूसरे प्रश्न का उत्तर नहीं है, ऐसा करने का कोई विकल्प नहीं है। लेकिन अगर आप किसी भी तरह से लिपटे सभी डेटा पेश करने जा रहे हैं, तो आप हमेशा अंतिम तिथि को मैन्युअल रूप से संपादित कर सकते हैं, मुझे इसमें कोई नुकसान नहीं दिख रहा है।

2

नहीं, आप इसे रविवार को नहीं दे सकते हैं।

क्योंकि period.apply का परिणाम के सूचकांक से

ep <- endpoints(myTs,'weeks') 

myTs[ep] 
      [,1] 
2012-12-02 2 
2012-12-09 9 
2012-12-10 10 

दिया जाता है तो तुम अंतिम तिथि बदलाव की जरूरत है। दुर्भाग्य से एक्सटीएस इस विकल्प की पेशकश नहीं करते हैं, आप इंडेक्स के एक ही मूल्य को स्थानांतरित नहीं कर सकते हैं।

ts.weeks <- apply.weekly(myTs, colSums) 
ts.weeks[length(ts.weeks)] <- last(index(myTs)) + 7-last(floor(diff(ep))) 
संबंधित मुद्दे