R语言 如何根据另一个数据框中的多个列值进行筛选?

vsaztqbk  于 2023-05-20  发布在  其他
关注(0)|答案(2)|浏览(211)

我有一个数据框,我试图根据第一个数据框中的2个ID列进行过滤。下面是 Dataframe 1:
| id_1| id_2|
| --------------|--------------|
| A| 1|
| B| 2|
| C| 3|
以及 Dataframe 2:
| id_1| id_2|
| --------------|--------------|
| A| 1|
| B| 2|
| A| 2|
如果我做了什么...

df2_filtered <- df2 %>%
filter(id_1 %in% df1$id_1 &
        id_2 %in% df1$id_2)

然后我得到整个df 2,这不是我想要的。即使“A”在dfl的id_1中,并且“2”在dfl的id_2中,也不存在具有两者的行。我该怎么修复才能
| id_1| id_2|
| --------------|--------------|
| A| 1|
| B| 2|

qyyhg6bp

qyyhg6bp1#

可以使用dplyr::inner_join

inner_join(data1, data2)

# Joining, by = c("id_1", "id_2")
# id_1 id_2
# 1    A    1
# 2    B    2
sxissh06

sxissh062#

如果您没有绑定到dplyr解决方案,那么data.table有一个不错的选择:

library(data.table)
df1 = as.data.table(df1)
df2 = as.data.table(df2)
fintersect(df1, df2)
id_1 id_2
1:    A    1
2:    B    2

相关问题