我有一个类似于
的矩阵 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])]
但这不起作用。我使用重复错误还是有其他方法可以做到这一点?
答案 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,]