2016-06-17 6 views
0

私はいくつかのIDが複数回現れるデータフレームを持っています。私はこのIDを一意にサンプリングし、サンプルIDを持つベクトルを持つようになりました。今私は、データフレームのどの行が私のサンプルにも現れるIDを持っているかを教えてくれる論理を作成する必要があります。データフレームと重複とベクトルを比較するにはどうすればよいですか?

私はマッチ機能を試しましたが、最初の外観だけを選択し、すべての外観が必要です。

私はまた、マージを試みましたが、データセットが大きいので、それを行うメモリがありません。

+0

'mydf $ idcol%論理インデックスの%idsample'中:それぞれのインデックスを取得するに

。 –

+0

@PierreLafortuneこの場合のエチケットは何ですか?私の答えはあなたのコメントを超えて十分に追加されますか、それとも削除するべきですか?どちらにしても大丈夫です。 – lmo

+0

削除しないでください、私はコメントを残しました、あなたは例で展開するように答えることができます –

答えて

2

%in%を使用して論理ベクトルを取得し、whichinを組み合わせて行インデックスを取得できます。重複したIDを含む再現可能な例を次に示します。あなたdf$idがそうでなければmySampleFALSEに表示されている場合TRUEある論理ベクトルを与える

x=match(df$id, mySample, nomatch = 0) > 0 

を:

set.seed(1234) 
df <- data.frame(id=sample(1:80, 100, replace=TRUE), b=rnorm(100)) 
mySample <- seq(1, 80, by=6) 

#logical vector length of nrow(df) 
myRows <- df$id %in% mySample 
# row indices 
myIndices <- which(df$id %in% mySample) 
2

これは(あなたがこの機能をしようとしていたとして)あなたがmatchを使って何ができるかです。

which(x==T) 
関連する問題