2

可能重复:
仅选择 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)

它吐出的东西比我预期的要多得多,我收到以下错误消息:

警告消息:在 contacts$V1 == c(g) 中:较长的对象长度不是较短对象长度的倍数

4

1 回答 1

18

您可以使用以下unique功能:

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

你也可以写

unique(mat)

它会给你独特的线条(我在你的文件上试过)。

如果要选择V1s 值,可以这样做:

> 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
于 2012-12-12T16:00:26.877 回答