2

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

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

数据框 A

Cat      Dog
Mouse    Cat
Rat      Cat
Rat      Dog

数据框 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()会在这里有所帮助。

4

1 回答 1

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
于 2014-06-19T02:24:04.427 回答