كيفية إجراء المطابقة الغامضة في لغة r (مع مثال)


في كثير من الأحيان قد ترغب في ضم مجموعتين من البيانات في R بناءً على سلاسل متطابقة بشكل غير كامل. يُطلق على هذا أحيانًا اسم المطابقة الغامضة .

أسهل طريقة لإجراء مطابقة غامضة في R هي استخدام الدالة stringdist_join() من الحزمة fuzzyjoin .

يوضح المثال التالي كيفية استخدام هذه الوظيفة عمليًا.

مثال: المطابقة الغامضة في R

لنفترض أن لدينا إطاري البيانات التاليين في R الذي يحتوي على معلومات حول فرق كرة السلة المختلفة:

 #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

لنفترض الآن أننا نريد إجراء صلة يسارية حيث نحتفظ بجميع الصفوف من إطار البيانات الأول وندمجها ببساطة بناءً على اسم الفريق الذي يطابق أكثر في إطار البيانات الثاني.

يمكننا استخدام الكود التالي للقيام بذلك:

 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

والنتيجة هي إطار بيانات يحتوي على كل اسم من أسماء الفرق الخمسة الأصلية من إطار البيانات الأول بالإضافة إلى الفريق الأكثر تطابقًا مع إطار البيانات الثاني.

ملاحظة رقم 1 : نختار استخدام مقياس المسافة jw للمطابقة. هذا اختصار لمسافة Jaro-Winkler ، وهو مقياس يقيس الفرق بين سلسلتين.

ملاحظة رقم 2: استخدمنا الدالة Slice_min() من الحزمة dplyr لعرض اسم الفريق فقط من إطار البيانات الثاني الذي يتطابق بشكل وثيق مع اسم الفريق من إطار البيانات الأول.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في R:

كيفية دمج إطارات بيانات متعددة في R
كيفية دمج إطارات البيانات بناءً على أعمدة متعددة في R

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *