Dplyr: วิธีใช้ anti_join เพื่อค้นหาบันทึกที่ไม่ตรงกัน
คุณสามารถใช้ฟังก์ชัน anti_join() จากแพ็คเกจ dplyr ใน R เพื่อส่งคืนแถวทั้งหมดใน data frame ที่ไม่มีค่าที่ตรงกันใน data frame อื่น
ฟังก์ชันนี้ใช้ไวยากรณ์พื้นฐานต่อไปนี้:
anti_join(df1, df2, by= ' col_name ')
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ
ตัวอย่างที่ 1: ใช้ anti_join() กับคอลัมน์
สมมติว่าเรามีเฟรมข้อมูลสองเฟรมต่อไปนี้ใน R:
#create data frames df1 <- data. frame (team=c('A', 'B', 'C', 'D', 'E'), dots=c(12, 14, 19, 24, 36)) df2 <- data. frame (team=c('A', 'B', 'C', 'F', 'G'), dots=c(12, 14, 19, 33, 17))
เราสามารถใช้ฟังก์ชัน anti_join() เพื่อส่งคืนแถวทั้งหมดใน data frame แรกที่ไม่มีทีมที่ตรงกันใน data frame ที่สอง:
library (dplyr) #perform anti join using 'team' column anti_join(df1, df2, by=' team ') team points 1 D 24 2 E 36
เราจะเห็นได้ว่ามีสองทีมจาก data frame แรกที่ไม่มีชื่อทีมที่ตรงกันใน data frame ที่สอง
ตัวอย่างที่ 2: ใช้ anti_join() กับหลายคอลัมน์
สมมติว่าเรามีเฟรมข้อมูลสองเฟรมต่อไปนี้ใน R:
#create data frames df1 <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B'), position=c('G', 'G', 'F', 'G', 'F', 'C'), dots=c(12, 14, 19, 24, 36, 41)) df2 <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B'), position=c('G', 'G', 'C', 'G', 'F', 'F'), dots=c(12, 14, 19, 33, 17, 22))
เราสามารถใช้ฟังก์ชัน anti_join() เพื่อส่งคืนแถวทั้งหมดใน data frame แรกที่ไม่มีทีมที่ตรงกัน และ ตำแหน่งใน data frame ที่สอง:
library (dplyr) #perform anti join using 'team' and 'position' columns anti_join(df1, df2, by=c(' team ', ' position ')) team position points 1 FY 19 2 BC 41
เราจะเห็นได้ว่ามีบันทึกสองรายการจากกรอบข้อมูลแรกที่ไม่มีชื่อทีม และ ตำแหน่งที่ตรงกันในกรอบข้อมูลที่สอง
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีการใช้งานฟังก์ชันทั่วไปอื่น ๆ ใน dplyr:
วิธีเลือกคอลัมน์ตามดัชนีโดยใช้ dplyr
วิธีรวมหลายเฟรมข้อมูลโดยใช้ dplyr
วิธีกรองแถวที่มีสตริงบางตัวโดยใช้ dplyr