R 如何使用另一个数据帧从数据帧中删除行

R 如何使用另一个数据帧从数据帧中删除行,r,dataset,filter,subset,R,Dataset,Filter,Subset,虽然有很多结果,但似乎没有一个能回答我下面的问题: 我有两个数据帧 df1 = data.frame(x= c("a1","b1","c1","d1","e1","f1"),y = c("a2","b2","c2","d2","e2","f2"), z = 1:6) df2 = data.frame(x = c("a1", "b1"), y = c("a2", "b2")) 他们返回: > df1 x y z 1 a1 a2 1 2 b1 b2 2 3 c1 c2 3 4 d

虽然有很多结果,但似乎没有一个能回答我下面的问题: 我有两个数据帧

df1 = data.frame(x= c("a1","b1","c1","d1","e1","f1"),y =  c("a2","b2","c2","d2","e2","f2"), z = 1:6)

df2 = data.frame(x = c("a1", "b1"), y = c("a2", "b2"))
他们返回:

> df1
   x  y z
1 a1 a2 1
2 b1 b2 2
3 c1 c2 3
4 d1 d2 4
5 e1 e2 5
6 f1 f2 6


> df2
   x  y
1 a1 a2
2 b1 b2
我怎样才能得到他们剩余的内部连接,我的意思是我想得到:

   x  y z

1 c1 c2 3
2 d1 d2 4
3 e1 e2 5
4 f1 f2 6
我试过了

子集(df1,(df1$x%在%df2$x中)和(df1$y%在%df2$y中)


但它也不起作用。我尝试了左连接,但我一直在获取原始数据帧df1。这里有一个解决方案,使用一个键,将第一列和第二列组合在一起,然后使用
%in%
函数

df1 = data.frame(x= c("a1","b1","c1","d1","e1","f1"),y =  c("a2","b2","c2","d2","e2","f2"), z = 1:6)

df2 = data.frame(x = c("a1", "b1"), y = c("a2", "b2"))

#create a unique key for each dataframe
df1key<-paste(df1$x, df1$y)
df2key<-paste(df2$x, df2$y)

#return rows not matching rows in df2
answer<-df1[!(df1key  %in%  df2key),]
df1=数据帧(x=c(“a1”、“b1”、“c1”、“d1”、“e1”、“f1”),y=c(“a2”、“b2”、“c2”、“d2”、“e2”、“f2”),z=1:6)
df2=数据帧(x=c(“a1”、“b1”),y=c(“a2”、“b2”))
#为每个数据帧创建一个唯一的键

DF1KEYOU REQUIRE
dplyr::anti_join(df1,df2)