我有两个数据框(df1和df2)
让df1成为这样一个数据框:
col1 col2 col3
a 3 12
a 5 15
b 2 3
a 5 6
a 4 12
b 5 15
a 3 14
c 5 8
c 3 2
c 2 22
b 2 21
a 5 11
b 5 7
c 5 6
a 2 5
即 `
df1<-data.frame(col1=c("a","a","b","a","a","b","a","c","c","c","b","a","b","c","a")
,col2=c(3,5,2,5,4,5,3,5,3,2,2,5,5,5,2)
,col3=c(12,15,3,6,12,15,14,8,2,22,21,11,7,6,5))
让df2就是这样一个数据框:
col1 col2
b 3
c 4
所需的输出是:
col1 col2 col3
a 3 12
b 2 3
a 4 12
b 5 15
a 3 14
c 5 8
c 3 2
c 2 22
b 2 21
b 5 7
c 5 6
这是df1的子集。它包括df1的所有行,其与df2的col1或df2的col2相同。
例如,col1.df2的一个元素是&#34; b&#34;。所有行包括&#34; b&#34;在col1的df1将是所需输出的元素。
df2的第二列包括&#34; 3&#34;。因此所有行包括&#34; 3&#34;在col2的df1将是所需输出的元素。
同样适用于&#34; c&#34;和&#34; 4&#34;。
我怎么能用R做到这一点?我会很高兴得到任何帮助。谢谢。
答案 0 :(得分:4)
试试吧:
df1[df1$col1 %in% df2$col1 | df1$col2 %in% df2$col2,]
答案 1 :(得分:2)
如果有很多列
,您还可以将Reduce
与Map
一起使用
df1[Reduce(`|`, Map(`%in%`, df1[1:2], df2[1:2])),]