我有以下数据集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行。
但是,就我而言,我事先并不知道mydf
中asd
行中的行数是多少。这意味着我们必须首先搜索它们。
如果我的数据太大而无法使用for
循环,那么在R中执行此操作的最简单方法是什么?
答案 0 :(得分:2)
dplyr具有以下功能,用于删除第二个数据框中的行:
setdiff(mydf,asd)
答案 1 :(得分:2)
我们可以使用base R
mydf[!as.character(interaction(mydf)) %in% as.character(interaction(asd)),]