आर में फ़ज़ी मिलान कैसे करें (उदाहरण के साथ)


अक्सर आप अपूर्ण रूप से मेल खाने वाली स्ट्रिंग के आधार पर आर में डेटा के दो सेटों को जोड़ना चाह सकते हैं। इसे कभी-कभी फ़ज़ी मिलान भी कहा जाता है।

R में फ़ज़ी मिलान करने का सबसे आसान तरीका फ़ज़ीजॉइन पैकेज से stringdist_join() फ़ंक्शन का उपयोग करना है।

निम्नलिखित उदाहरण दिखाता है कि व्यवहार में इस फ़ंक्शन का उपयोग कैसे करें।

उदाहरण: आर में अस्पष्ट मिलान

मान लीजिए कि हमारे पास 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 : हम मिलान के लिए जेडब्ल्यू दूरी मीट्रिक का उपयोग करना चुनते हैं। यह जारो-विंकलर दूरी का संक्षिप्त रूप है, जो एक मीट्रिक है जो दो तारों के बीच अंतर को मापता है।

नोट #2: हमने दूसरे डेटा फ्रेम से केवल टीम का नाम प्रदर्शित करने के लिए dplyr पैकेज से स्लाइस_मिन() फ़ंक्शन का उपयोग किया, जो पहले डेटा फ्रेम से टीम के नाम से सबसे अधिक मेल खाता था।

अतिरिक्त संसाधन

निम्नलिखित ट्यूटोरियल बताते हैं कि आर में अन्य सामान्य कार्य कैसे करें:

आर में एकाधिक डेटा फ़्रेम कैसे मर्ज करें
आर में एकाधिक कॉलम के आधार पर डेटा फ़्रेम को कैसे मर्ज करें

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *