在dplyr中使用特定组合进行过滤

时间:2018-05-04 13:47:58

标签: r filter dplyr

对于以下问题必须有一个简单的解决方案,但我不能自己弄明白,不幸的是我的搜索没有成功:

在包含多列的data.frame中:

x <- data.frame(id = c(1, 1, 2, 2),
                dat = c("a", "b", "a", "b"),
                val = 1:4)

我想过滤掉我在另一个data.frame中的观察结果:

y <- data.frame(id = 1:2,
                dat = c("a", "b"))

结果应如下所示:

> z
  id dat val
1  1   a   1
2  2   b   4 

以下方法无法获得所需的结果:

> x %>% filter(id %in% y$id & dat %in% y$dat)
  id dat val
1  1   a   1
2  1   b   2
3  2   a   3
4  2   b   4

有人可以指出我正确的方向吗?

提前多多感谢!

1 个答案:

答案 0 :(得分:3)

我们可以使用inner_join

library(dplyr)
inner_join(x, y)

merge来自base R

merge(x, y)