2013-01-14 110 views
2

我在這樣的情況下我: 我有data.frame看起來像以下:多列比較

Col1 Col2 
    a  3.4 
    a  3.4  
    d  3.2 
    c  3.2 

我想下面的輸出:

Col1 Col2 
    a 3.4  
    d 3.2 
    c 3.2 

換句話說,「Col1」中的值「a」將被認爲是一次,因爲它是再現的否則即使「d」和「c」的值與「Col2」中報告的值相同,由於它們是不同的實體(「d」不同於「c」),所以它將被認爲是兩次。

任何人都可以幫助我嗎?

回答

4
> df <- read.table(header=T, text=' 
+ label value 
+  A  4 
+  B  3 
+  C  6 
+  B  3 
+  B  1 
+  A  2 
+  A  4 
+  A  4 
+ ') 
> unique(df[duplicated(df),]) # Finds unique duplicated 
    label value 
4  B  3 
7  A  4 
> df[duplicated(df),] # Finds Duplicated 
    label value 
4  B  3 
7  A  4 
8  A  4 
> df[!duplicated(df),] # Finds rows which are not duplicated 
    label value 
1  A  4 
2  B  3 
3  C  6 
5  B  1 
6  A  2 
> 
+0

非常感謝Harpal! – Bfu38

5

試試這個:

DF <- read.table(text=" Col1 Col2 
    a  3.4 
    a  3.4  
    d  3.2 
    c  3.2 ", header=T) 
aggregate(Col2~Col1, unique, data=DF) 
    Col1 Col2 
1 a 3.4 
2 c 3.2 
3 d 3.2 
+1

這是(確實)只是一個選擇,我同意你的'duplicated'是更直接的和正確的。沒有特殊的理由使用它。 –