簡體   English   中英

從R中的矩陣中刪除重復的行

[英]Removing duplicated rows from from matrix in R

我有一個類似於

 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()和plicate(),但無法產生我需要的東西。 如果我的矩陣是m.dat我嘗試使用

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

但這不起作用。 我是使用重復錯誤還是有另一種方法來執行此操作?

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])]) ,]

我能夠弄清楚。 我用的是

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM