执行字符串距离连接
在数据分析中,整合两个不同的数据源非常常见。只要有可能,您都应该使用可明确识别的值(例如电子邮箱地址)来连接两张表。但如果用户只输入了姓名,而您需要在用户数据库中查找该用户,该怎么办?难点在于:人们可能会缩写名或姓、出现拼写错误,或者干脆漏掉一部分。
工作空间中有两个数据框:user_input 和 database。前者包含不完美的用户输入,后者包含正确的姓名,但两份数据源都包含相同的 100 个姓名。使用字符串距离连接,您能匹配到多少个?顺便说一句:没有定义距离 method,因此会使用默认的最优字符串对齐距离 "osa"。
本练习是课程的一部分
R 中级正则表达式
练习说明
- 将
user_input与database按最大字符串距离max_dist进行连接,使成功匹配的姓名恰好为 80 个。请反复尝试,直到找到合适的最大距离。 - 使用新创建的表
joined输出一条便于阅读的报告句子。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Join the data frames on a maximum string distance of 2
joined <- stringdist_join(
user_input,
database,
by = c("user_input" = "name"),
___ = ___,
distance_col = "distance",
ignore_case = TRUE
)
# Print the number of rows of the newly created data frame
print(glue(
"{n} out of 100 names were matched successfully",
n = nrow(___)
))