R တွင် fuzzy matching ပြုလုပ်နည်း (ဥပမာဖြင့်)


မကြာခဏဆိုသလို သင်သည် မစုံလင်သောကိုက်ညီသော စာကြောင်းများကို အခြေခံ၍ R တွင် ဒေတာနှစ်စုံကို ချိတ်ဆက်လိုပေမည်။ ဒါကို တစ်ခါတရံ fuzzy matching လို့ ခေါ်ပါတယ်။

R တွင် fuzzy matching ပြုလုပ်ရန် အလွယ်ကူဆုံးနည်းလမ်းမှာ fuzzyjoin package မှ stringdist_join() လုပ်ဆောင်ချက်ကို အသုံးပြုရန်ဖြစ်သည်။

အောက်ဖော်ပြပါ ဥပမာသည် ဤလုပ်ဆောင်ချက်ကို လက်တွေ့အသုံးချနည်းကို ပြသထားသည်။

ဥပမာ- 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

ရလဒ်သည် ပထမဒေတာဘောင်မှ မူလအသင်းအမည်ငါးခုစီပါဝင်သည့် ဒေတာဘောင်တစ်ခုနှင့် ဒုတိယဒေတာဘောင်နှင့် အနီးစပ်ဆုံးကိုက်ညီသည့်အသင်းဖြစ်သည်။

မှတ်ချက် နံပါတ် ၁- ကိုက်ညီမှုအတွက် jw အကွာအဝေးမက်ထရစ်ကို အသုံးပြုရန် ကျွန်ုပ်တို့ ရွေးချယ်ပါသည်။ ၎င်းသည် Jaro-Winkler အကွာအဝေး အတွက် အတိုကောက်ဖြစ်ပြီး string နှစ်ခုကြားခြားနားချက်ကိုတိုင်းတာသည့်မက်ထရစ်တစ်ခုဖြစ်သည်။

မှတ်ချက် #2- ပထမဒေတာဘောင်မှ အဖွဲ့အမည်ကို အနီးစပ်ဆုံးကိုက်ညီသည့် ဒုတိယဒေတာဘောင်မှ အဖွဲ့အမည်ကိုသာ ပြသရန် dplyr ပက်ကေ့ဂျ်မှ slice_min() လုပ်ဆောင်ချက်ကို အသုံးပြုထားပါသည်။

ထပ်လောင်းအရင်းအမြစ်များ

အောက်ဖော်ပြပါ သင်ခန်းစာများသည် R တွင် အခြားဘုံအလုပ်များကို မည်သို့လုပ်ဆောင်ရမည်ကို ရှင်းပြသည်-

R တွင် ဒေတာဘောင်များစွာကို ပေါင်းစည်းနည်း
R ရှိ ကော်လံများစွာကို အခြေခံ၍ ဒေတာဘောင်များ ပေါင်းစည်းနည်း

မှတ်ချက်တစ်ခုထည့်ပါ။

သင့် email လိပ်စာကို ဖော်ပြမည် မဟုတ်ပါ။ လိုအပ်သော ကွက်လပ်များကို * ဖြင့်မှတ်သားထားသည်