匹配2个不同顺序的2个独立数据框中的2列,并返回另一个值

时间:2014-06-19 02:17:16

标签: r match grepl

我有2个数据框,我希望匹配2列文本数据(我熟悉使用match()函数来匹配使用一列的数据帧)。

数据帧A是数据帧B的子集,但是2列中的数据可能以相反的顺序出现,即Dog-Cat可能是Cat-Dog。 Dataframe B还包含一列额外的数值。我想将数据帧A与数据帧B匹配,然后返回数字列。在所有情况下都会匹配。

Dataframe A

Cat      Dog
Mouse    Cat
Rat      Cat
Rat      Dog

Dataframe B

Giraffe  Cat        0.7
Rat      Cat        0.2
Cat      Mouse      0.6
Cat      Dog        0.9
Giraffe  Elephant   0.1
Dog      Rat        0.3

匹配的数据应该是

Cat      Dog         0.9
Mouse    Cat         0.6
Rat      Cat         0.2
Rat      Dog         0.3

我尝试使用match()并尝试连接测试字符串。还不确定grepl()是否会对此有所帮助。

1 个答案:

答案 0 :(得分:1)

正常进行合并,并交换列,rbind两个结果:

rbind( merge(A,B), merge(A,B, by.x=c('V1', 'V2'), by.y=c('V2', 'V1')))
     V1  V2  V3
1   Cat Dog 0.9
2   Rat Cat 0.2
3 Mouse Cat 0.6
4   Rat Dog 0.3