2011-10-24 18 views
6

प्रिय समुदाय,चिड़ियाघर वस्तु एकत्रीकरण

डेटा मैं प्राप्त एक डेटा फ्रेम में हो जाएगा:

Var_1  Var_2   Date  VaR_3 VaR_4 VaR_5 Var_6 
1   4  2010-01-18   7 apple 10 sweet 
2   5  2010-07-19   8 orange 11 sour 
3   6  2010-01-18   9 kiwi  12 juicy 
...  ...  ...    ... ...  ... ... 

मैं, चिड़ियाघर का उपयोग करने के बाद से यह एक लचीला वस्तु वर्ग हो रहा है करना चाहते हैं। मैं सिर्फ आर के साथ शुरू कर रहा हूं और मैंने पैकेज के लिए विवरण (विगेट्स) पढ़ने की कोशिश की।

सवाल:

  1. एक डेटा फ्रेम, जो विधि एक चिड़ियाघर वस्तु में पूरा df कन्वर्ट करने के लिए सिफारिश की है, चिड़ियाघर है कि यह तिथि स्तंभ के रूप में तीसरे स्तंभ का उपयोग होना चाहिए कह के रूप में ऊपर आंकड़ों को देखते हुए (दिनांकों कर सकते हैं डेटा में कई बार होता है)?
  2. चिड़ियाघर निर्मित कार्यों का उपयोग करके कॉलम 4 और 6 को छोड़कर, मैं मासिक रूप से अन्य सभी कॉलम कैसे एकत्र करूं? क्या चिड़ियाघर स्वचालित रूप से स्पष्ट चर को त्यागने में सक्षम है और केवल उन स्तंभों का उपयोग करें जो एकत्रीकरण के लिए उपयुक्त हैं?
  3. कॉलम 4 में प्रत्येक श्रेणी के लिए मैं मासिक रूप से सभी संख्यात्मक कॉलम कैसे एकत्र करूं (कॉलम 6 शामिल नहीं किया जाएगा, क्योंकि यह गैर-संख्यात्मक है)।

आपके समर्थन के लिए धन्यवाद।

+0

प्रश्न 1 के लिए काम करने के लिए लगता है: df.z <-read.zoo (df, index.column = 3, कुल = एफ) – John

उत्तर

4

चिड़ियाघर वस्तुओं समय श्रृंखला हैं और आमतौर पर संख्यात्मक वैक्टर या matrices हैं। ऐसा लगता है कि आपके पास वास्तव में अलग-अलग समय श्रृंखला का एक समूह है जहां कॉलम 5 यह पहचानता है कि यह कौन सी श्रृंखला है। यही है, एक सेब श्रृंखला, एक नारंगी श्रृंखला, एक कीवी श्रृंखला, आदि है और उनमें से प्रत्येक में कई कॉलम हैं।

इसके संख्यात्मक नहीं के बाद से अंतिम स्तंभ गिराने, सूचकांक और स्तंभ 5 पर बंटवारे के रूप में तीसरे स्तंभ का उपयोग कर हमने:

# create test data 
Lines <- "Var_1  Var_2   Date  VaR_3 VaR_4 VaR_5 Var_6 
1   4  2010-01-18   7 apple 10 sweet 
2   5  2010-07-19   8 orange 11 sour 
3   6  2010-01-18   9 kiwi  12 juicy" 
cat(Lines, "\n", file = "data.txt") 

library(zoo) 
z <- read.zoo("data.txt", header = TRUE, index = 3, split = "VaR_5", 
    colClasses = c(Var_6 = "NULL")) 

परिणाम है:

> z 
      Var_1.apple Var_2.apple VaR_3.apple VaR_5.apple Var_1.kiwi 
2010-01-18   1   4   7   10   3 
2010-07-19   NA   NA   NA   NA   NA 
      Var_2.kiwi VaR_3.kiwi VaR_5.kiwi Var_1.orange Var_2.orange 
2010-01-18   6   9   12   NA   NA 
2010-07-19   NA   NA   NA   2   5 
      VaR_3.orange VaR_5.orange 
2010-01-18   NA   NA 
2010-07-19   8   11 

ऊपर है कि मान लिया गया है कॉलम 5 के दिए गए मान के लिए कि तिथियां अद्वितीय हैं। यदि ऐसा नहीं है तो aggregate = mean तर्क या aggregate के लिए कुछ अन्य मान शामिल करें।

अब एक मासिक चिड़ियाघर श्रृंखला में यह कुल करने के लिए हमने:

aggregate(z, as.yearmon, mean) 

यह भी FUN = as.yearmon तर्क का उपयोग करके सीधे मासिक करने के लिए दूर यह कन्वर्ट करने के लिए संभव हो जाएगा:

zm <- read.zoo("data.txt", header = TRUE, index = "Date", split = "VaR_4", 
    FUN = as.yearmon, colClasses = c(Var_6 = "NULL"), aggregate = mean) 

देखें ?read.zoo , vignette("zoo-read"), ?aggregate.zoo और अन्य विगनेट्स और सहायता फ़ाइलों को भी।

+0

प्रिय गेबर, आपके उत्तर के लिए धन्यवाद और विचारशील सुझाव। हकीकत में मेरा डेटासेट अधिक जटिल है। उदाहरण के लिए मैंने डेटा फ्रेम को इस तरह से कम किया है कि यह सबसे महत्वपूर्ण गुण दिखाता है। विभाजन के लिए कौन सा कॉलम उपयोग किया जाएगा अज्ञात है। संख्याओं या श्रेणियों वाले कई और कॉलम हैं। अपनी विधि का उपयोग करते हुए, मुझे ज़ू ऑब्जेक्ट में एकत्रीकरण करना चाहते हैं, तो मुझे उन्हें मैन्युअल रूप से सॉर्ट करना होगा।क्या प्रत्येक कॉलम पर लॉजिकल टेस्ट का उपयोग करने का कोई तरीका है, जैसे कि यह बताता है और चिड़ियाघर ऑब्जेक्ट के केवल उन कॉलम को रखता है, जिसमें संख्यात्मक डेटा होता है? – John

+0

थोड़ा आगे स्पष्टीकरण के लिए: पहले चरण में मैं सभी डेटा पर वर्णित अनुसार एकत्र करना चाहता हूं। दूसरा कदम श्रेणियों से विभाजित होगा। एक संभावना है कि प्रत्येक श्रेणी के लिए उसी तारीख में प्रविष्टियां होती हैं। हालांकि यह ठीक होना चाहिए, क्योंकि मैं ज्यादातर मामलों में केवल योग, प्रत्येक महीने के लिए गणना, औसत और पूर्ण संख्या में निर्धारित करना चाहता हूं। – John

+0

मुझे लगता है कि आप मानते हैं कि ऑब्जेक्ट में संख्यात्मक और गैर-संख्यात्मक कॉलम हैं। चिड़ियाघर वस्तुओं वेक्टर या matrices पर आधारित हैं और विभिन्न वर्गों के मिश्रण नहीं हो सकता है। उन्हें इस मामले में संख्यात्मक होना चाहिए। यह स्पष्ट नहीं है कि आप किस कॉलम पर विभाजित होना चाहते हैं अज्ञात है। अंत में आपको यह जानना होगा कि यह क्या है। आप डेटा को डेटा.फ्रेम में पढ़ सकते हैं और डेटा फ्रेम पर read.zoo का उपयोग कर सकते हैं (read.zoo का पहला तर्क डेटा फ्रेम हो सकता है)। यदि आप चाहें तो विभिन्न चिड़ियाघर वस्तुओं को प्राप्त करने के लिए इसे अलग-अलग विभाजन के साथ कई बार किया जा सकता है। –

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