Metin uzaklığı birleştirmesi yapmak
Farklı veri kaynaklarını bir araya getirmek veri analizinde çok yaygın bir görevdir. Mümkün olduğunda, iki tabloyu birleştirirken e-posta adresi gibi açıkça tanımlanabilir değerler kullanmalısın. Peki ya bir kullanıcı sadece adını girdiyse ve sen bunu kullanıcı veritabanında aramak zorundaysan? Zorluk şu: İnsanlar ad veya soyadlarını kısaltabilir, yazım hatası yapabilir ya da bazı kısımları tamamen atlayabilir.
Scope’ta iki veri çerçevesi var: user_input ve database. İlki hatalı kullanıcı girişlerini, ikincisi doğru adları içeriyor; ancak her iki veri kaynağında da aynı 100 isim bulunuyor. Bir metin uzaklığı birleştirmesiyle bunların kaçını eşleştirebilirsin? Bu arada: Herhangi bir uzaklık methodu tanımlanmadı, bu yüzden varsayılan olan Optimal String Alignment uzaklığı "osa" kullanılacak.
Bu egzersiz
R ile Orta Düzey Düzenli İfadeler
kursunun bir parçasıdırEgzersiz talimatları
user_inputiledatabase’i, tam olarak seksen ismin başarıyla eşleşeceği bir en yüksek metin uzaklığımax_distile birleştir. Doğru en yüksek uzaklığı bulana kadar denemeler yap.- Yeni oluşturulan
joinedtablosunu kullanarak, insan tarafından okunabilir bir rapor cümlesi yazdır.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# 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(___)
))