使用R在矩阵中选择唯一行

时间:2012-12-12 15:55:19

标签: r

  

可能重复:
  Select only the first rows for each unique value of a column in R

我有一个以下形式的矩阵:

col1 col2

1    2   
1    2    
1    2   
1    2   
1    2
2    5
2    5
2    5
3    7
3    7
3    7
3    7
3    7
3    7
3    7
3    7
4    2 
4    2 
4    2

我想根据'col1'选择所有唯一的行。

在这种情况下,它将是col1中每个唯一值的第一行:

子集:

col1   col2
1      2 
2      5
3      7
4      2

这是我尝试过的:

https://dl.dropbox.com/u/22681355/matrix.csv
mat<-read.csv("matrix.csv")
sub<-unique(mat$V1)
subset(mat, mat==c(sub)

它吐出的东西比我预期的要多得多,而且我得到了这个错误消息:

警告讯息: 在联系人$ V1 == c(g):   较长的物体长度不是较短物体长度的倍数

1 个答案:

答案 0 :(得分:18)

您可以使用unique功能:

unique(mat$V1) # and not matrix$v1
[1]   44  281 1312

你也可以写

unique(mat)

它将为您提供独特的线条(我在您的文件上尝试过它)。

如果要选择V1的值,可以执行以下操作:

> mat[!duplicated(mat$V1), ]
       X   V1 V2 V3 V4  V5 V6 V7 V8 V9 V10
1   1547   44 14  1  2 100 17  0  0  0   0
23  5385  281 67  2 10 100 10  0  0  0   0
33 17347 1312  1  2  6 100  8  0  0  0   0