2016-03-29 56 views
0

我的數據集的樣子:確定在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