2011-09-11 22 views
69

データセットLearnBayesを使用しています。実際のデータを参照したい場合:データフレームを列内の値でフィルタリングする

install.packages('LearnBayes') 

私は列の値に基づいて行をフィルタリングしようとしています。たとえば、列の値が「水」の場合、その行が必要です。列の値が「ミルク」の場合、私はそれを望んでいません。最終的に、私は飲み物の列が "水"であるすべての個人を除外しようとしています。それを行う必要があります

subset(studentdata, Drink=='water') 

+2

でこれを更新すると思いますが、 '['? '読んでみ'して、 '?subset'をお読みください。 – joran

+0

ポインタをありがとう。確かに便利なアドバイスと将来の使用を楽しみにしています。 – user722224

+4

非常に良いRマニュアルを読むことをお勧めします:http://cran.r-project.org/doc/manuals/R-intro.html – Andrie

答えて

51

はこれを試してみてください。

+0

ありがとう!私はそれのいくつかのバリエーションを試みたが、句読点やそのような愚かな何かをオフにしている必要があります。私は助けに感謝します。 – user722224

155

サブセットコマンドは不要です。ただ、データフレームのインデックスを使用し

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

これは、対話的に使用することを目的と便利な関数です?subset

からの警告をお読みください。 プログラミングでは、 '['のような標準サブセット関数を使用する方が良いでしょう。特に、引数 ' 'の非標準評価は予期しない結果を招く可能性があります。

+0

ありがとう、男! –

+2

ありがとう@adamleerich。好奇心の中で、カンマの背後にある理由は何ですか? – ThinkBonobo

+3

'[] 'シンタックスは、マトリックスがmath:rowとcolumnでインデックス付けされ、コンマで区切られた通常の方法で、2次元データフレームにインデックスを付けます。この例では、行インデックスのベクトルを渡しています( 'studentData $ Drink == 'water''が興味のある行を選びます)が、私たちはそれらを得るための列を制限したくないので行(すべてが欲しい)では、インデックスペアの列部分を空白のままにします(コンマの後には何もありません)。これは、すべての列インデックスのベクトルを与える必要がないようにする構文上の砂糖です。 – Will

25

思想私はdplyrソリューション

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

またはパイプ 'studentdata%>%filter(Drink ==" water ")' –

関連する問題