从R中的矩阵中删除重复的行

时间:2014-01-24 20:45:53

标签: r matrix duplicates

我有一个类似于

的矩阵
 2013  1  0    
 2013  1  30
 2013  1  100
 2013  2  0
 2013  2  30
 2013  2  100
 2013  3  0
 2013  3  30
 2013  3  100
 2013  1  0
 2013  1  30
 2013  4  0

在第三个之后有额外列的附加数据。 我需要一种方法来删除重复的行。在这个例子中,我需要删除第二列中有1的行。有没有办法在保留我的其余数据的同时删除这些行。

我尝试过unique()和duplicate(),无法生成我需要的东西。如果我矩阵是m.dat我尝试使用

m.dat <- m.dat[-duplicated(m.dat[,2:3])]

但这不起作用。我使用重复错误还是有其他方法可以做到这一点?

2 个答案:

答案 0 :(得分:1)

m.dat<-m.dat[m.dat[ ,2]!=1, ]

m.dat<-m.dat[!(m.dat[ ,2]==1 & duplicated(m.dat[,1:3]) , ]

取决于您要找的内容。如果你想删除第二列中值为'1'的记录或那些带有'1'并且也是重复行的记录

,我有点困惑

如果您想知道该列中重复的数字,您可以使用类似

的内容
reps<-unique(m.dat[,2][duplicated(m.dat[,2])])

然后使用%in%语句

删除所有这些内容

类似......

m.dat<-m.dat[ ! m.dat[,2] %in% unique(m.dat[,2][duplicated(m.dat[,2])]) ,]

答案 1 :(得分:0)

我能够弄清楚。我用的是

 m <- duplicated(m.dat[,3:4])
 m <- as.numeric(m)
 ind = which(m ==1)
 m.dat = m.dat[-ind,]