首页 文章

数据帧的子集,包括指定列的另一个数据帧的元素

提问于
浏览
1

我有两个数据帧(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的一个元素是“b” . 因此,在df1的col1处包括“b”的所有行都将是所需输出的元素 .

另外第二列df2包括“3” . 因此,包括df1的col2的“3”的所有行将是所需输出的元素 .

“c”和“4”也是如此 .

我怎么能用R做到这一点?我会很高兴得到任何帮助 . 非常感谢 .

2 回答

  • 2

    试一试:

    df1[df1$col1 %in% df2$col1 | df1$col2 %in% df2$col2,]
    
  • 4

    如果有很多列,您也可以将 ReduceMap 一起使用

    df1[Reduce(`|`, Map(`%in%`, df1[1:2], df2[1:2])),]
    

相关问题