2013-05-12 11 views
12

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

मैंने डेटा नामक एक पैकेज उपनिर्देशिका बनाई है और मुझे पता है कि यह वह स्थान है जहां मुझे अपने पैकेज में जो डेटासेट जोड़ना है, उसे सहेजना चाहिए। मैं इस तथ्य से भी अवगत हूं कि डेटा वाली फाइलें हो सकती हैं। आरडीए, .txt, या .csv फ़ाइलें।

डेटा की प्रत्येक श्रृंखला जिसे मैं पैकेज में जोड़ना चाहता हूं, संख्याओं का एक स्तंभ (उदाहरण के रूप में फॉर्म 340 या 4.5) होता है और डेटा की प्रत्येक श्रृंखला लंबाई में भिन्न होती है।

अब तक, मैंने सभी डेटासेट को .txt फ़ाइल में सहेजा है। मैंने डेटा() फ़ंक्शन का उपयोग करके डेटा को सफलतापूर्वक लोड किया है। समस्या हल नहीं हुई, हालांकि।

समस्या यह है कि श्रृंखला की प्रत्येक श्रृंखला श्रृंखला को छोड़कर श्रृंखला के अलावा एक कारक के रूप में लोड होती है। श्रृंखला के रूप में लोड होने वाली श्रृंखला में गुम मूल्य (फॉर्म '।' के होते हैं)। मुझे डेटा के प्रत्येक कॉलम को लंबाई में समान बनाने के लिए इन लापता मानों को जोड़ना पड़ा। मैंने डेटा को असमान कॉलम के रूप में सहेजने का प्रयास किया, लेकिन डेटा() पर कॉल करने के बाद मुझे एक त्रुटि संदेश प्राप्त हुआ।

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

आदर्श रूप से (मुझे लगता है), मैं डेटा को संख्यात्मक वैक्टर या सूची के रूप में लोड करना चाहता हूं। इस तरह, मुझे प्रत्येक श्रृंखला के अंत में संलग्न एनए की आवश्यकता नहीं होगी।

मैं इस समस्या को कैसे हल करूं? क्या मुझे सभी डेटा एक ही फाइल में सहेजना चाहिए? यदि हां, तो मुझे किस प्रारूप में यह करना चाहिए? शायद मुझे डेटासेट को कई फाइलों में सहेजना चाहिए? फिर, किस प्रारूप में? ऐसा करने का सबसे अच्छा व्यावहारिक तरीका क्या है? किसी भी सुझाव की सराहना की जाएगी।

उत्तर

8

मुझे यकीन नहीं है कि मैं आपके प्रश्न को सही तरीके से समझ गया हूं। लेकिन, यदि आप अपने पसंदीदा प्रारूप में अपने डेटा को संपादित करने और

save(myediteddata, file="data.rda") 

साथ बचाने डेटा वास्तव में जिस तरह से आप आर

में इसे देखा आप

जोड़ना चाहिए डेटा निर्देशिका में सभी फ़ाइलों को लोड करने के लिए लोड किया जाना चाहिए
LazyData: true 

अपने पैकेज में, अपनी वर्णन फ़ाइल में।

यदि यह आप अपनी फ़ाइलों में से एक और प्रारूप आप चाहते हैं का एक प्रिंट पोस्ट कर सकता मदद नहीं करते हैं, यह हमें आपकी मदद करने में मदद मिलेगी;)

+0

धन्यवाद, उपयोगकर्ता 1265067। आपके सुझाव ने मुझे बहुत मदद की है। अंत में, मैंने अलग-अलग .rda फ़ाइलों के रूप में, मेरे पसंदीदा प्रारूप में, प्रत्येक श्रृंखला को सहेजने का निर्णय लिया। यह विधि मेरे लिए एक आकर्षण काम करती है। अब मैं अपने पैकेज में डेटासेट का वर्णन करने के लिए .rd फ़ाइलों को बनाने और उन्हें मैन उपनिर्देशिका में डालकर आगे बढ़ सकता हूं। चीयर्स! वैसे, मेरे प्रश्न को समझने में आसान नहीं होने के लिए माफ़ी - शब्दों में डालना मुश्किल था। –

+0

@GraemeWalsh: क्या आप समझा सकते हैं कि आपने अपने कोड में इन .rda फ़ाइलों का उपयोग कैसे किया? क्या यह .rds फ़ाइलों का उपयोग करना संभव है? – Ankit

+1

@Ankit कार्यक्षेत्र में डेटा लोड करने के लिए लोड() फ़ंक्शन का उपयोग करें। http://en.wikibooks.org/wiki/R_Programming/Working_with_data_frames#Reading_and_saving_data इससे मदद मिलती है? –

3

आरडीए फ़ाइलें आप भी चुन सकते हैं के रूप में सहेजने के अलावा उन लोगों के साथ संख्यात्मक रूप में लोड करने के लिए:

read.table(... , colClasses="numeric") 

या गैर कारक-पाठ के रूप में:

read.table(..., as.is=TRUE) # which does pretty much the same as stringsAsFactors=FALSE 
read.table(..., colClasses="character") 

यह भी प्रतीत होता है कि data समारोह इन तर्कों पाप स्वीकार करेंगे सी इसे read.table(..., header=TRUE) के लिए एक साधारण रैपर होने के लिए प्रलेखित किया गया है।

+0

मदद के लिए धन्यवाद, डीडब्ल्यूएन। –

0

आपके डेटा का पसंदीदा बचत स्थान इसके प्रारूप पर निर्भर करता है।

Hadley के रूप में सुझाव दिया:

  • आप बाइनरी डेटा स्टोर और यह उपयोगकर्ता के लिए उपलब्ध बनाना चाहते हैं, data/ में रख दें। उदाहरण डेटासेट डालने के लिए यह सबसे अच्छी जगह है।
  • यदि आप पार्स किए गए डेटा को स्टोर करना चाहते हैं, लेकिन इसे उपयोगकर्ता पर उपलब्ध न करें, तो इसे R/sysdata.rda पर रखें। डेटा को आपके फ़ंक्शन की आवश्यकता रखने के लिए यह सबसे अच्छी जगह है।
  • यदि आप कच्चे डेटा को स्टोर करना चाहते हैं, तो इसे inst/extdata पर रखें।

मैं सुझाव है कि आप लिंक किए गए अध्याय पर एक नजर है के रूप में यह डेटा के साथ काम कर जब आर संकुल के विकास के बारे में विस्तार में चला जाता है।

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