簡體   English   中英

數據幀的子集,包括指定列上另一個數據幀的元素

[英]Subset of a data frame including elements of another data frame at the specified columns

我有兩個數據幀(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的子集。 它包括與df2的col1或df2的col2等價的df1的所有行。

例如,col1.df2的元素之一是“ b”。 因此,df1的col1處包括“ b”的所有行將成為所需輸出的元素。

df2的第二列也包含“ 3”。 因此,包括df1的col2處的“ 3”在內的所有行將成為所需輸出的元素。

對於“ c”和“ 4”也是如此。

我如何用R做到這一點? 我會很高興為您提供任何幫助。非常感謝。

你試一試:

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

如果有很多列,您也可以在Map使用Reduce

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM