Je DF1 comme ceci:R: cbind basé sur premier match quelques lettres ou le nombre de cellules
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
Je DF2 comme ça.
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"))
Je veux faire correspondre les premières lettres/chiffres dans DF1 $ B avec ceux DF2 $ Y. Et puis fusionner deux dataframe basé sur la meilleure correspondance, en tant que tel, nous nous attendons à un résultat trame de données comme ceci:
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
Pourriez-vous l'esprit de me apprendre comment le faire? Merci. La correspondance ne peut se produire que dans les premières lettres/chiffres, la partie correspondante ne peut pas apparaître au milieu ou à la fin des mots dans df1 $ B, y a-t-il un moyen efficace de le faire avec R?
Merci. Pourriez-vous m'apprendre à modifier votre code quand df1 et df2 ont un numéro différent. de rangées? Où il peut également permettre l'appariement de se produire plus d'une fois, chaque fois, aucune correspondance, «NA» devrait être donnée? – user2718
Je ne suis pas sûr de comprendre votre question - essayez de remplacer 'data.frame' par' list' dans l'exemple de code ci-dessus – nullglob
Désolé de ne pas avoir donné suffisamment de détails dans cette question. J'ai modifié et posté une question détaillée modifiée comme suit. S'il vous plaît veuillez donner vos commentaires. @nullglob – user2718