过滤两个配对列

时间:2016-06-28 14:08:41

标签: r

请考虑以下事项:

> df <- data.frame(x = letters[1:15], y = rep(1:3, 5), z = rep(1:5, 3))
> df
   x y z
1  a 1 1
2  b 2 2
3  c 3 3
4  d 1 4
5  e 2 5
6  f 3 1
7  g 1 2
8  h 2 3
9  i 3 4
10 j 1 5
11 k 2 1
12 l 3 2
13 m 1 3
14 n 2 4
15 o 3 5

我有另一个数据框df2,比如说

> df2 <- data.frame(y = c(2, 3), z = c(2, 5))
> df2
  y z
1 2 2
2 3 5

我希望使用dfyz的值来过滤 df2行。也就是说,输出应该类似于

   x y z
1  a 1 1
3  c 3 3
4  d 1 4
5  e 2 5
6  f 3 1
7  g 1 2
8  h 2 3
9  i 3 4
10 j 1 5
11 k 2 1
12 l 3 2
13 m 1 3
14 n 2 4

配对(y, z)非常重要。我尝试过像

这样的事情

df[!((df$y %in% df2$y) & (df$z %in% df2$z),]

但问题在于:如果我这样做,不仅会对(2, 2)(3, 5)对进行过滤,还会过滤(3, 2)(2, 5) ,我想要发生。

显然,我可以根据这一点连接列和过滤器,但我想知道是否有更好的方法来处理这个问题。

0 个答案:

没有答案