对于以下问题必须有一个简单的解决方案,但我不能自己弄明白,不幸的是我的搜索没有成功:
在包含多列的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
有人可以指出我正确的方向吗?
提前多多感谢!
答案 0 :(得分:3)
我们可以使用inner_join
library(dplyr)
inner_join(x, y)
merge
来自base R
merge(x, y)