R'de bulanık eşleştirme nasıl yapılır (örnekle)


Çoğu zaman, kusurlu şekilde eşleşen dizelere dayalı olarak R’de iki veri kümesini birleştirmek isteyebilirsiniz. Buna bazen bulanık eşleştirme denir.

R’de bulanık eşleştirmeyi gerçekleştirmenin en kolay yolu, fuzzyjoin paketindeki stringdist_join() işlevini kullanmaktır.

Aşağıdaki örnekte bu fonksiyonun pratikte nasıl kullanılacağı gösterilmektedir.

Örnek: R’de bulanık eşleştirme

R’de çeşitli basketbol takımları hakkında bilgi içeren aşağıdaki iki veri çerçevesine sahip olduğumuzu varsayalım:

 #create data frames
df1 <- data. frame (team=c('Mavericks', 'Nets', 'Warriors', 'Heat', 'Lakers'),
                  points=c(99, 90, 104, 117, 100))
df2 <- data. frame (team=c('Mavricks', 'Warrors', 'Heat', 'Netts', 'Kings', 'Lakes'),
                  assists=c(22, 29, 17, 40, 32, 30))

#view data frames
print (df1)

       team points
1 Mavericks 99
2 Nets 90
3 Warriors 104
4 Heat 117
5 Lakers 100

print (df2)

      team assists
1 Mavricks 22
2 Warriors 29
3 Heat 17
4 Netts 40
5 Kings 32
6 Lakes 30

Şimdi, ilk veri çerçevesindeki tüm satırları tuttuğumuz ve bunları ikinci veri çerçevesinde en çok eşleşen takım adına göre birleştirdiğimiz bir sol birleştirme yapmak istediğimizi varsayalım.

Bunu yapmak için aşağıdaki kodu kullanabiliriz:

 library (fuzzyjoin)
library (dplyr)

#perform fuzzy matching left join
stringdist_join(df1, df2, 
                by=' team ', #match based on team
                mode=' left ', #use left join
                method = " jw ", #use jw distance metric
                max_dist=99, 
                distance_col=' dist ') %>%
  group_by(team.x) %>%
  slice_min(order_by=dist, n= 1 )

# A tibble: 5 x 5
# Groups: team.x [5]
  team.x points team.y assists dist
                 
1 Heat 117 Heat 17 0     
2 Lakers 100 Lakes 30 0.0556
3 Mavericks 99 Mavricks 22 0.0370
4 Nets 90 Nets 40 0.0667
5 Warriors 104 Warriors 29 0.0417

Sonuç, ilk veri çerçevesindeki orijinal beş takım adının her birini ve ayrıca ikinci veri çerçevesiyle en yakından eşleşen takımı içeren bir veri çerçevesidir.

Not #1 : Eşleştirme için jw mesafe ölçüsünü kullanmayı seçiyoruz. Bu, iki dizi arasındaki farkı ölçen bir ölçüm olan Jaro-Winkler mesafesinin kısaltmasıdır.

Not #2: Yalnızca ilk veri çerçevesindeki takım adıyla en yakından eşleşen ikinci veri çerçevesindeki takım adını görüntülemek için dplyr paketindeki dilim_min() işlevini kullandık.

Ek kaynaklar

Aşağıdaki eğitimlerde R’de diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:

R’de birden fazla veri çerçevesi nasıl birleştirilir
R’de birden çok sütuna dayalı veri çerçeveleri nasıl birleştirilir

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir