2011-09-11 8 views
69

में मानों द्वारा डेटा फ्रेम फ़िल्टर करना मैं डेटासेट LearnBayes के साथ काम कर रहा हूं। मैं स्तंभों में मूल्य के आधार पर पंक्तियों को फ़िल्टर करने के कोशिश कर रहा हूँकॉलम

install.packages('LearnBayes') 

: उन है कि चाहते हैं वास्तविक डेटा को देखने के लिए के लिए। उदाहरण के लिए, यदि कॉलम मान "पानी" है, तो मुझे वह पंक्ति चाहिए। यदि कॉलम मान "दूध" है, तो मुझे यह नहीं चाहिए। आखिरकार, मैं उन सभी व्यक्तियों को फ़िल्टर करने की कोशिश कर रहा हूं जो पेय कॉलम "पानी" है।

+2

कोशिश पढ़ने 'के साथ इस अद्यतन चाहते हैं? '['' और फिर पढ़ा '? Subset'। – joran

+0

पॉइंटर्स के लिए धन्यवाद। निश्चित रूप से आसान सलाह और भविष्य में इसका उपयोग करने के लिए तत्पर हैं। – user722224

+4

मेरा सुझाव है कि आप बहुत अच्छे आर मैनुअल पढ़ें: http://cran.r-project.org/doc/manuals/R-intro.html – Andrie

उत्तर

51

इस प्रयास करें:

subset(studentdata, Drink=='water') 

है कि यह करना चाहिए।

+0

धन्यवाद! मैंने उसमें कुछ बदलाव करने की कोशिश की लेकिन विराम चिह्न या कुछ मूर्खतापूर्ण तरीके से बंद होना चाहिए। मैं मदद की सराहना करता हूं। – user722224

155

सबसेट कमांड आवश्यक नहीं है। बस डेटा फ्रेम अनुक्रमण

studentdata[studentdata$Drink == 'water',] 

का उपयोग से ?subset

चेतावनी पढ़ें यह उपयोग के लिए सहभागी इरादा एक सुविधा कार्य है। प्रोग्रामिंग के लिए मानक सबसेटिंग फ़ंक्शंस जैसे '' 'का उपयोग करना बेहतर है, और विशेष रूप से तर्क ' सबसेट 'के गैर-मानक मूल्यांकन से अप्रत्याशित परिणाम हो सकते हैं।

+0

धन्यवाद, आदमी! –

+2

धन्यवाद @adamleerich। जिज्ञासा से बाहर, अल्पविराम के पीछे तर्क क्या है? – ThinkBonobo

+3

'[] 'वाक्यविन्यास सामान्य रूप से 2-आयामी डेटा फ्रेम में अनुक्रमित करता है कि मैट्रिस गणित में अनुक्रमित होते हैं: पंक्ति और फिर कॉलम, कोमा द्वारा अलग किया जाता है। इस मामले में, हम पंक्ति सूचकांक के वेक्टर पास कर रहे हैं ('studentData $ Drink == 'water'' उन पंक्तियों को चुनता है जिनमें हम रुचि रखते हैं), लेकिन चूंकि हम उन स्तंभों को प्रतिबंधित नहीं करना चाहते हैं जिन्हें हम उन लोगों के लिए प्राप्त करते हैं पंक्तियां (हम उन सभी को चाहते हैं), हम इंडेक्स जोड़ी के कॉलम हिस्से को खाली छोड़ देते हैं (इसलिए अल्पविराम के बाद कुछ भी नहीं है)। यह सभी कॉलम इंडेक्स के वेक्टर देने से बचने के लिए सिंटेक्टिक चीनी है। – Will

25

सोचा मैं एक dplyr समाधान

library(dplyr)  
filter(studentdata, Drink == "water") 
+13

या पाइप 'studentdata%>% फ़िल्टर (पेय == "पानी") के साथ निकालने के लिए एक और ऑपरेशन की आवश्यकता है। –