วิธีดำเนินการจับคู่แบบคลุมเครือใน 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