2017-06-14 17 views
-1

我想創建一個變量(例如reap),只有某些列的元素與另一行的元素重複時,纔會取值TRUE,但其他列上的值不同。 樣本數據可能會澄清我的問題:僅針對某些列識別重複行

V1 V2 V3 
1. a b c 
2. a b d 
3. e f g 
4. e f g 

例如,如果我們希望有一個變量取真值時行具有相同的V1和V2,但不同的V3,那麼這個變量應該如下所示:

V1 V2 V3 reap 
1. a b c TRUE 
2. a b d TRUE 
3. e f g FALSE 
4. e f g FALSE 

非常感謝您的幫助。

+0

您的問題ISN 't清除 –

+0

您好@Tanuj Yadav,讓我以這種方式重新修改,希望這會有所幫助:如果我有一個包含3列的數據集,我正在查找在前兩列中具有相同值的行,而在第三個o東北。現在更清楚了嗎? –

+0

好的,我明白了。但是你想要一個程序或其他東西嗎? –

回答

0

一個想法是要確定每列的所有副本,並使用rowSums和設置條件!= ncol(df)

rowSums(sapply(df, function(i) duplicated(i)|duplicated(i, fromLast = TRUE))) != ncol(df) 
#[1] TRUE TRUE FALSE FALSE 

創建一個邏輯向量只考慮第三列

m1 <- sapply(df, function(i) duplicated(i)|duplicated(i, fromLast = TRUE)) 
rowSums(m1) == 2 & !m1[,3] 
#[1] TRUE TRUE FALSE FALSE