Bắt đầu ngayBắt đầu miễn phí

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_inputdatabase. 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

Xem khóa học

Hướng dẫn bài tập

  • Join user_inputdatabase với khoảng cách chuỗi tối đa max_dist sao 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(___)
))
Chỉnh sửa và Chạy Mã