2013-01-14 74 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'是更直接的和正确的。没有特殊的理由使用它。 –