我有这样的df1:
df1 <- data.frame(A=c("x01","x02","y03","z02","x04"), B=c("A01BB01","A02BB02","C02AA05","B04CC10","C01GX02"))
A B
1 x01 A01BB01
2 x02 A02BB02
3 y03 C02AA05
4 z02 B04CC10
5 x04 C01GX02
我有这样的df2。
X Y
1 a A01BB
2 b A02
3 c C02A
4 d B04
5 e C01GX
df2 <- data.frame(X=c("a","b","c","d","e"), Y=c("A01BB","A02","C02A","B04","C01GX"))
我希望将df1 $ B中的前几个字母/数字与df2 $ Y中的字母/数字相匹配。然后根据最佳匹配合并两个数据帧,因此,我们希望看到这样的结果数据框:
A B X Y
1 x01 A01BB01 a A01BB
2 x02 A02BB02 b A02
3 y03 C02AA05 c C02A
4 z02 B04CC10 d B04
5 x04 C01GX02 e C01GX
你能介意教我怎么做吗?感谢。
匹配只能在前几个字母/数字中出现,匹配的部分不能出现在df1 $ B中的单词的中间或末尾,是否有任何有效的方法可以用R?
答案 0 :(得分:0)
您可以使用pmatch
进行此类匹配:
with(c(df1,df2),{
i <- pmatch(Y,B)
data.frame(A,B,X = X[i],Y = Y[i])
})