使用搜索从数据框中删除多行

时间:2017-04-04 04:57:25

标签: r

我有以下数据集mydf,我从中提取了几行(在本例中我提取了2行)

library(dplyr)


mydf<- data.frame(c(1,1,3,4,5,6),
                  c(22,22,3,10,20,30),
                  c(2,10,20,20,15,10),
                  c(3,10,20,20,15,10),
                  c(4,10,20,20,15,10),
                  c(5,10,20,20,15,10))
colnames(mydf)<-c( "ID1","ID2", "ID3", "ID4", "ID5", "ID6")

asd <- (mydf %>% group_by(ID1, ID2) %>% filter(n()==2)) 

我想从asd 删除 mydf中包含的行。通常,这可以通过

来完成
mydf[-c(2, 4, 6), ]

在此示例中,我们删除第2,3和6行。

但是,就我而言,我事先并不知道mydfasd行中的行数是多少。这意味着我们必须首先搜索它们。

如果我的数据太大而无法使用for循环,那么在R中执行此操作的最简单方法是什么?

2 个答案:

答案 0 :(得分:2)

dplyr具有以下功能,用于删除第二个数据框中的行:

setdiff(mydf,asd)

答案 1 :(得分:2)

我们可以使用base R

执行此操作
mydf[!as.character(interaction(mydf)) %in% as.character(interaction(asd)),]