可能重复:
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): 较长的物体长度不是较短物体长度的倍数
答案 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