Thực hiện join theo khoảng cách chuỗi
Kết hợp hai nguồn dữ liệu khác nhau là một tác vụ rất phổ biến trong phân tích dữ liệu. Khi có thể, bạn nên dùng các giá trị nhận diện rõ ràng như địa chỉ email để join hai bảng. Nhưng nếu người dùng chỉ nhập tên và bạn phải tra trong cơ sở dữ liệu người dùng thì sao? Khó ở chỗ: Mọi người có thể viết tắt tên hoặc họ, gõ sai ký tự, hoặc bỏ qua một phần nào đó.
Trong phạm vi bài này có hai data frame: user_input và database. Cái đầu chứa dữ liệu người dùng nhập có lỗi, cái sau chứa tên đúng, nhưng cả hai nguồn đều có cùng 100 tên. Bạn có thể khớp được bao nhiêu trong số đó bằng join theo khoảng cách chuỗi? Nhân tiện: Không có method khoảng cách nào được chỉ định, nên mặc định sẽ dùng khoảng cách Optimal String Alignment "osa".
Bài tập này là một phần của khóa học
Regular Expressions nâng cao trong R
Hướng dẫn bài tập
- Join
user_inputvàdatabasevới khoảng cách chuỗi tối đamax_distsao cho chính xác tám mươi tên được khớp thành công. Hãy thử nghiệm cho đến khi bạn tìm ra khoảng cách tối đa phù hợp. - Dùng bảng mới tạo
joinedđể in ra một câu báo cáo thân thiện, dễ đọc.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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(___)
))