Ben yaklaşık dize eşleştirme yapmak istediğiniz iki veri çerçeve var.yaklaşık bir dize eşleşmesi durumunda bir eşleşme durumunda R
> df1
Source Name Country
A Glen fiddich United Kingdom
A Talisker dark storm United Kingdom
B johnney walker United states
D veuve clicquot brut France
E nicolas feuillatte brut France
C glen morangie united kingdom
B Talisker 54 degrees United kingdom
F Talisker dark storm United states
ikinci veri çerçevesi
> df2
Source Name Country
A smirnoff ice Russia
A Talisker daek strome United Kingdom
B johnney walker United states
D veuve clicquot brut Australia
E nicolea feuilate brut Italy
C glen morangie united kingdom
B Talisker 54 degrees United kingdom
iki veri çerçevesinden arasındaki yaklaşık eşleştirme için anahtar sütun "Ad" dir. Gözlemler için sütunlardaki ilişki nedeniyle, "ülke" sütununda da eşleşme olan yaklaşık eşleşmeleri seçmek önemlidir. Ben kullanıyorum kod özü aşağıdaki gibidir:
dist.mat <- stringdistmatrix(tolower(df1$title), tolower(df2$title), method = "jw",
nthread = getOption("sd_num_thread"))
min.dist <- apply(dist.mat, 1, min)
matched <- data.frame(df1$title,
as.character(apply(dist.mat, 1, function(x) df2$title[which(x == min(x))])),
apply(dist.mat, 1, which.min), "jw", apply(dist.mat, 1, min))
colnames(matched) <- c("to_be_matched", "closest_match", "index_closest_match",
"distance_method", "distance")
Yukarıdaki kod sadece "Ad" sütununda verilere dayalı df1 ve df2 arasındaki yaklaşık eşleşmeyi yürütür. Yapmak istediğim, "Değer" sütununda, iki değer için "Ülke" sütununda bir eşleşme olması koşuluyla seçilen yaklaşık eşleşme olmalıdır.
Sadece başlığa göre bakılırsa, OP bir R tabanlı bir çözüm arıyordu düşünüyorum. –
Aslında düşündüğüm bir python etiketi vardı - benim hatam. –