2013-02-02 6 views
15

私は3つの列を持つデータセットを持っています。最初の列は型、2列目は領域、3列目は価値があります。論理ベクトルを書いて、type = 1、area = 3、およびworth = 6というような論理ベクトルを作成したい。サブセットを使ってデータフレームを作成することができたが、論理ベクトルを作成できなかった。Rで論理ベクトルを作成し、どの関数を使用するか

hello <- read.csv("type.csv") 
hello1 <- subset(hello, type==1 & area ==3 & worth ==6) 

価値の高い列には多くのNA値があります。 データセットはhttps://www.dropbox.com/s/gjjwmnr8uxmy18y/type.csv

ありがとうございます。

Jdbaba

+3

試み: 'と(ハロー、ハロー[タイプ== 1&エリア== 3&価値== 6、])' –

+0

@タイラー、あなたの返事をありがとう。実際には、タイプ== 1、エリア== 3、価値== 6を識別する論理的なベクトルを割り当てる必要があります。その後、論理ベクトルが真のときにデータフレームの行を識別するためにwhich()関数を適用する必要があります。 –

+2

'(hello、type == 1&area == 3&worth == 6))' – Arun

答えて

16

そこで質問は答えたまま:だけでなく

which(hello$type1 == 1 & hello$area == 3 & hello$Worth == 6) 

which(with(hello, type == 1 & area == 3 & Worth == 6)) 

はあなただけとしてそれを使用することができ、覚えておいてください。ただし、確認する文がさらに多い場合は、毎回hello$と入力しなくても確認できるので、withが便利です。

+1

はい、回答しました。ありがとう。 –

+1

OPのように、ベクトルが索引付けに使用されることが示唆されている場合、 'which'は必要ありません。実際、それを使用しないことも推奨されています。私はそれがトラブルにつながる可能性のある少なくとも1つの例を持っています。そして、それは負のインデックス付けです: 'hello [-which(bool.vec)]'は 'hello [!bool.vec、]' bool.vec'はどこでも 'FALSE'です。 – flodel

6

答えはすでに受け入れられてきたが、OPは論理ベクトルを作成するように求め、これらの条件に一致する行を返します

答え

which(hello$type1 == 1 & hello$area == 3 & hello$Worth == 6) 
。代わりに、論理ベクトルを返すために、単に whichに引数を使用する、すなわち

hello$type1 == 1 & hello$area == 3 & hello$Worth == 6 
関連する問題