執行字串距離連接
在資料分析中,整合兩個不同的資料來源非常常見。只要有機會,最好用像電子郵件地址這樣容易辨識的值來連接兩個資料表。不過,若使用者只輸入了姓名,而你需要在使用者資料庫中查找該筆資料,該怎麼辦?難點在於:人名可能會縮寫名字或姓氏、輸入錯字,或是直接漏掉部分。
在這個情境中有兩個資料框:user_input 與 database。前者包含有瑕疵的使用者輸入,後者則是正確的姓名,但兩個資料來源都含有相同的 100 筆姓名。用字串距離連接,你能配對到多少筆?順帶一提:並未指定距離的 method,因此會使用預設的最佳字串對齊距離 "osa"。
本練習屬於課程
R 中級 Regular Expressions
練習說明
- 以最大字串距離
max_dist將user_input與database連接,讓成功配對的姓名恰好為 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(___)
))