2011-09-20 10 views
24

मैं डेटा विश्लेषण के लिए आर का उपयोग करता हूं और इसके साथ बहुत खुश हूं। हालांकि, डेटा साफ करना थोड़ा आसान हो सकता है। मैं इस कार्य के लिए उपयुक्त एक और भाषा सीखने के बारे में सोच रहा हूं। विशेष रूप से, मैं कच्चे डेटा को लेने, अनावश्यक चर या अवलोकनों को हटाने के लिए उपयोग करने के लिए एक उपकरण की तलाश में हूं, और आर में सामग्री को आसानी से लोड करने के लिए प्रारूपित करता हूं। बहु-पंक्ति पाठ के विपरीत सामग्री अधिकतर संख्यात्मक और स्ट्रिंग डेटा होगी।डेटा की सफाई के लिए पायथन या अजीब/sed

मैं पाइथन बनाम अजीब/sed संयोजन पर विचार कर रहा हूं। (मुझे पता है कि पर्ल एक और विकल्प होगा, लेकिन, अगर मैं एक और पूर्ण भाषा सीखने जा रहा था, तो पाइथन बेहतर, अधिक एक्स्टेंसिबल पसंद प्रतीत होता है।)

sed/awk का लाभ यह है कि यह तेज़ होगा सीखना। नुकसान यह है कि यह संयोजन पायथन के रूप में एक्स्टेंसिबल नहीं है। दरअसल, अगर मैं पाइथन सीखता हूं, तो मैं कुछ "मिशन रेंगने" की कल्पना कर सकता हूं, जो ठीक होगा, लेकिन मेरा लक्ष्य नहीं।

अन्य विचार जो मेरे पास था, बड़े डेटा सेट के लिए अनुप्रयोग है। जैसा कि मैं इसे समझता हूं, awk/sed लाइन-बाय-लाइन संचालित करता है, जबकि पायथन आम तौर पर सभी डेटा को स्मृति में खींच लेता है। यह sed/awk के लिए एक और फायदा हो सकता है।

क्या कोई अन्य समस्याएं हैं जो मुझे याद आ रही हैं? कोई भी सलाह जो आप पेश कर सकते हैं उसकी सराहना की जाएगी। (मैं आर उपयोगकर्ताओं को अपने सफाई सिफारिशें की पेशकश करने के लिए R टैग शामिल थे।)

+0

"सफाई" द्वारा, आपका मतलब है क्लिपिंग आउटलाइजर्स या स्थिरता बहाल करना या कुछ और? "डेटा" द्वारा, आपका मतलब मुख्य रूप से संख्या या तार, या बस पाठ है? मेरे लिए वर्तमान प्रश्न का यह लक्ष्य बहुत सामान्य है। – nye17

+0

@ nye17, अस्पष्टता के लिए खेद है। मैंने थोड़ा और विस्तार जोड़ा। – Charlie

+2

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

उत्तर

15

नहीं अपने साहस खराब करने के लिए है, लेकिन मैं नहीं कहना और यहाँ क्यों है चाहते हैं:

  • आर vectorised है जहां एसईडी/awk नहीं हैं
  • आर पहले से ही दोनों पर्ल नियमित अभिव्यक्ति और विस्तारित नियमित अभिव्यक्ति है
  • आर और अधिक आसानी से सांख्यिकीय दिनचर्या (जैसे कि, इलज़ाम) यदि आपको आवश्यकता
  • आर, कल्पना कर सकते हैं संक्षेप में प्रस्तुत, ...
  • का सहारा बना सकते हैं

और सबसे महत्वपूर्ण बात: आप पहले ही आर जानते हैं।

यह कहा गया है कि, निश्चित रूप से sed/awk छोटे कार्यक्रमों के लिए बहुत अच्छे हैं या यहां तक ​​कि एक-लाइनर और पायथन एक अच्छी भाषा है। लेकिन मैं आर

+4

मुझे नहीं लगता कि वह आर छोड़ने पर विचार कर रहा है, बल्कि इसे पूरक बना रहा है। – Karl

3

के साथ भी चिपकने पर विचार करता हूं। मैं डेटा फ़ाइलों को प्रोसेस करने के लिए उचित भाषा के साथ लंबी अवधि के लिए निवेश की सिफारिश करता हूं, जैसे कि पाइथन या पर्ल या रूबी, शॉर्ट टर्म sed/awk समाधान बनाम। मुझे लगता है कि सभी डेटा विश्लेषकों को कम से कम तीन भाषाओं की आवश्यकता है; मैं भारी कंप्यूटेशंस के लिए सी का उपयोग करता हूं, डेटा फ़ाइलों को प्रोसेस करने के लिए perl, और इंटरैक्टिव विश्लेषण और ग्राफिक्स के लिए आर।

मैंने पाइथन लोकप्रिय होने से पहले पर्ल सीखा। मैंने रूबी के बारे में बहुत अच्छी बातें सुनी हैं ताकि आप इसके बजाय कोशिश कर सकें।

इनमें से किसी के लिए आप लाइन-दर-लाइन फाइलों के साथ काम कर सकते हैं; पाइथन को पूरी फाइल को अग्रिम में पढ़ने की आवश्यकता नहीं है।

+2

निश्चित रूप से, चेतावनी के साथ कि 'सी ++ सी से बेहतर सी हो सकता है' और इसी प्रकार, पायथन प्रशंसकों का तर्क है कि पर्ल से बेहतर है।लेकिन एक सामान्य नियम के रूप में, 'आर, * ए * स्क्रिप्टिंग भाषा और * आधुनिक पोर्टेबल संकलित भाषा *' एक अच्छी नुस्खा है। –

+0

@DirkEddelbuettel दरअसल, मैं 90 के उत्तरार्ध में प्रोग्रामिंग के अनुसार फंस गया हूं; मुझे डर है कि छात्र मुझे रास्ता देखेंगे कि मैं फोरट्रान प्रोग्रामर देखता हूं। एक उचित कोडिंग पृष्ठभूमि से तुलना के माध्यम से – Karl

1

मैं इस प्रकार की प्रसंस्करण के लिए 'अजीब' की सिफारिश करता हूं।

संभवतः आप साधारण टेक्स्ट फ़ाइलों में अमान्य अवलोकनों को खोज/अस्वीकार कर रहे हैं।

इस काम पर अजीब बिजली तेज है और कार्यक्रम के लिए बहुत आसान है।

यदि आपको कुछ और जटिल करने की आवश्यकता है तो आप कर सकते हैं।

यदि आप प्रदर्शन हिट पर ध्यान नहीं देते हैं तो पाइथन भी एक संभावना है। "Rpy" लाइब्रेरी का उपयोग पायथन और आर घटकों को बारीकी से एकीकृत करने के लिए किया जा सकता है।

10

मैं नियमित रूप से पायथन और पर्ल का उपयोग करता हूं। मैं काफी अच्छी तरह से जानता हूं और एक बार बहुत अजीब इस्तेमाल किया। मैंने फिट और स्पर्ट्स में आर का उपयोग किया है। पर्ल डेटा परिवर्तन समारोह और गति के लिए गुच्छा का सबसे अच्छा है।

  • पर्ल अनिवार्य रूप से सबकुछ कर सकता है और अजीब कर सकता है, लेकिन बहुत कुछ भी। (वास्तव में, ए 2 पी और एस 2 पी, जो पर्ल के साथ आते हैं, अर्क और sed स्क्रिप्ट को पर्ल में परिवर्तित करते हैं।)
  • पर्ल अधिकांश लिनक्स/यूनिक्स सिस्टम के साथ शामिल है। जब यह मामला नहीं था, तो sed और awk सीखने का अच्छा कारण था। यही कारण है कि लंबे समय तक मर चुका है।
  • पर्ल में मॉड्यूल का एक समृद्ध सेट है जो अजीब या sed से प्राप्त करने से अधिक शक्ति प्रदान करता है। उदाहरण के लिए, ये मॉड्यूल एक-लाइनर सक्षम करते हैं जो पूरक डीएनए अनुक्रमों को उलट देता है, आंकड़े गणना करता है, सीएसवी फाइलों का विश्लेषण करता है, या MD5s की गणना करता है। (पैकेज के लिए http://cpan.org/ देखें)
  • पर्ल अनिवार्य रूप से sed और awk के रूप में terse के रूप में है। मेरे जैसे लोगों के लिए (और, मुझे संदेह है, आप), कमांड लाइन पर डेटा को तेज़ी से बदलना एक महान वरदान है। कुशल कमांड लाइन उपयोग के लिए पाइथन बहुत शब्दशः है।

मैं ईमानदारी से सोचने के लिए एक नुकसान पर हूं कि क्यों कोई पर्ल पर राज और अजीब सीखेंगे।

रिकॉर्ड के लिए, मैं "एक पर्ल लड़का" नहीं हूं। मुझे इसे एक स्विस सेना चाकू के रूप में पसंद है, न कि धर्म के रूप में।

+2

+1। पर्ल के लिए – nye17

+0

+1। यद्यपि पाइथन अधिक पठनीय हो सकता है, पर्ल इसे गति और कॉम्पैक्टनेस पर किसी भी समय धड़कता है। और कमांड लाइन विकल्प वास्तव में एक आशीर्वाद हैं। –

+0

'प्रत्येक यूनिक्स सिस्टम में पर्ल' तर्क sed और awk के लिए और भी अधिक लागू होता है, और यदि आपको विंडोज़ पर काम करने के लिए (shudder) की आवश्यकता होती है तो इन दोनों को पकड़ना आसान होता है। और हमें वापस 'बस उपयोग आर' पर ले जाता है क्योंकि चार्ली स्पष्ट रूप से विंडोज पर आर होगा। मैं पर्ल में बहुत से डेटा फ़िल्टर लिखता था लेकिन पूरी तरह से आर –

1

मैं Dirk से सहमत हूं। मैंने एक ही चीज़ के बारे में सोचा और कुछ अन्य भाषाओं का भी इस्तेमाल किया। लेकिन अंत में मैं फिर से आश्चर्यचकित हुआ कि ddply या plyr जैसे पैकेजों के साथ अधिक अनुभवी उपयोगकर्ता क्या करते हैं, यह आपके लिए बहुत दिलचस्प हो सकता है। यही कारण है कि किया जा रहा है कहा एसक्यूएल अक्सर डेटा करतब दिखाने के साथ मुझे मदद की

6

मैं sed करने की सलाह देते हैं awk यूनिक्स एक जैसे प्लेटफार्म पर उपलब्ध अन्य कमांड लाइन उपकरण का धन के साथ /: कॉम, टीआर, प्रकार, कट, में शामिल होने, ग्रेप, और लूपिंग और व्हाट्नॉट जैसे शैल क्षमताओं में बनाया गया। आपको वास्तव में एक और प्रोग्रामिंग भाषा सीखने की आवश्यकता नहीं है क्योंकि आर डेटा मैनिपुलेशन को संभालने के साथ-साथ अन्य लोकप्रिय स्क्रिप्टिंग भाषाओं से बेहतर नहीं हो सकता है।

+0

जेफ के पास एक अच्छा बिंदु है: जब पाइप के साथ मिलकर चिपकाया जाता है, तो कमांड लाइन टूल्स जैसे वे उल्लेख करते हैं, वे बहुत तेजी से और शक्तिशाली स्लाइसिंग और डेटा की मात्रा को सक्षम करते हैं। इन उपकरणों में से कई पेर्ल पूरक (सप्लांट्स के बजाए)। सारांश के लिए http://www.gnu.org/s/coreutils/manual/html_node/index.html पर जीएनयू कोर्यूटिल्स मैनुअल देखें। – Reece

+0

और बेहतर अभी भी, यदि आप जेफ और डिर्क द्वारा लिटलर पैकेज से शानदार 'आर' बाइनरी का उपयोग करते हैं तो आर एक ही पाइप के साथ खेल सकते हैं। तो आर का उपयोग करने के लिए वापस :) –

+0

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