我有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()
是否会对此有所帮助。
答案 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