2016-03-29 9 views
0

私のデータセットは以下のようになります。それ以外の場合は第1列はデータセット今Rの複数の列に重複した値を持つ行番号を特定しますか?

の列名で、ここでは代表しながら、私はそれを転置している

id 1 2 3 4 5 
v1 1 1 0 13 14 
v2 1 2 0 13 2 
v3 1 12 0 13 5 

、私はすべてに重複した値を持つIDを特定したいですv1からv3までの列を作成し、それらのidにフラグを立てます。

ので、出力は次のようになります。私はこの結果を得ることができ、様々な事をしようとしたがない

id 1 2 3 4 5 
v1 1 1 0 13 14 
v2 1 2 0 13 2 
v3 1 12 0 13 5 
flag 1 0 1 1 0 

。私は合計を行い、ループを適用することでこれを行うことができますが、データセットが非常に大きいので時間がかかるでしょう。

この問題を解決するための簡単な方法を教えていただければ本当に感謝しています。

答えて

2

我々は使用することができますrowSums

df1$flag <- +(rowSums(df1[,2]==as.matrix(df1[-1]))==(ncol(df1)-1)) 
df1$flag 
#[1] 1 0 1 1 0 

それとも

+(Reduce(`&`, lapply(df1[-1],`==`, df1[,2]))) 
1

一つの可能​​性は、各行内の値のいずれかの差異があるかどうかをチェックすることからなる、わずかに速くオプション:

は、
df1$flag <- +!apply(df1[-1],1,var) 
# id v1 v2 v3 flag 
#1 1 1 1 1 1 
#2 2 1 2 12 0 
#3 3 0 0 0 1 
#4 4 13 13 13 1 
#5 5 14 2 5 0 
関連する問題