【发布时间】:2021-04-01 15:04:03
【问题描述】:
我需要基于包含不完全匹配的名称的列合并两个数据集,有时是因为其中一列相对于另一列缺少名称。例如,在一列中我有"Martín Gallardo",而在另一列中我有"Martín Ricardo Gallardo"。另一个问题是,在某些名字和姓氏中出现颠倒,例如"Martín Gallardo" 在一个和"Gallardo Martín" 在另一个。如何使用 R 匹配这个?我的第一个想法是在两者中都使用str_split,并将一个集合上的每个分配给与另一个集合中更多元素匹配的那个,但我不知道如何编码。
谢谢。
编辑:数据看起来像这样
A <- tibble(email=c("martingallardo23@gmail.com","raulgimenez@gmail.com"),
name=c("martin", "raul"), last_name=c("gallardo","gimenez"),
full_name=c("martin gallardo", "raul gimenez"))
A
# A tibble: 2 x 4
# email name last_name full_name
# <chr> <chr> <chr> <chr>
# 1 martingallardo23@gmail.com martin gallardo martin gallardo
# 2 raulgimenez@gmail.com raul gimenez raul gimenez
B <- tibble(email=c("martingallardo@gmail.com", "raulgimenez2@gmail.com"),
name=c("martin ricardo", "gimenez"), last_name=c("gallardo", "raul"),
full_name=c("martin ricardo gallardo", "gimenez raul"), other_data=c("A", "B"))
B
# A tibble: 2 x 5
# email name last_name full_name other_data
# <chr> <chr> <chr> <chr> <chr>
# 1 martingallardo@gmail.com martin ricardo gallardo martin ricardo gallardo A
# 2 raulgimenez2@gmail.com gimenez raul gimenez raul B
【问题讨论】:
-
您能分享一段可重现的数据吗?以便其他人可以更有效地帮助您。
-
@AnoushiravanR 我添加了一个数据示例,这行得通吗?我想使用 full_name 将 A 与 B 匹配。还有一个可用的电子邮件,但并不总是匹配。
-
@MartinGallardo 然后你想合并 2 个数据集?我的意思是基于那些匹配的行。
-
@AnoushiravanR 是的,完全正确。
-
@PKumar 我会试试的。谢谢。
标签: r string-matching stringr fuzzyjoin