วิธีใช้ฟังก์ชัน setdiff ใน r (พร้อมตัวอย่าง)


ฟังก์ชัน setdiff() ใน R สามารถใช้ค้นหาความแตกต่างระหว่างสองชุดได้ ฟังก์ชันนี้ใช้ไวยากรณ์ต่อไปนี้:

setdiff(x,y)

ทอง:

  • x, y: เวกเตอร์หรือกรอบข้อมูลที่มีลำดับขององค์ประกอบ

บทช่วยสอนนี้มีตัวอย่างการใช้งานฟังก์ชันนี้ในทางปฏิบัติหลายตัวอย่าง

ตัวอย่างที่ 1: Setdiff พร้อมเวกเตอร์ตัวเลข

โค้ดต่อไปนี้แสดงวิธีใช้ setdiff() เพื่อระบุค่าทั้งหมดในเวกเตอร์ a ที่ไม่ปรากฏในเวกเตอร์ b :

 #definevectors
a <- c(1, 3, 4, 5, 9, 10)
b <- c(1, 2, 3, 4, 5, 6)

#find all values in a that do not occur in b
setdiff (a,b)

[1] 9 10

มีสองค่าที่ปรากฏในเวกเตอร์ a ที่ไม่ปรากฏในเวกเตอร์ b : 9 และ 10 .

หากเรากลับลำดับของเวกเตอร์ในฟังก์ชัน setdiff() เราสามารถระบุค่าทั้งหมดในเวกเตอร์ b ที่ไม่ปรากฏในเวกเตอร์ a แทน :

 #find all values in b that do not occur in a
setdiff (b,a)

[1] 2 6

มีสองค่าที่ปรากฏในเวกเตอร์ b ซึ่งไม่ปรากฏในเวกเตอร์ a : 2 และ 6

ตัวอย่างที่ 2: Setdiff พร้อมเวกเตอร์อักขระ

โค้ดต่อไปนี้แสดงวิธีใช้ setdiff() เพื่อระบุค่าทั้งหมดในเวกเตอร์ char1 ที่ไม่ปรากฏในเวกเตอร์ char2 :

 #define character vectors
char1 <- c('A', 'B', 'C', 'D', 'E')
char2 <- c('A', 'B', 'E', 'F', 'G')

#find all values in char1 that do not occur in char2
setdiff (char1, char2)

[1] “C” “D”

ตัวอย่างที่ 3: Setdiff พร้อมเฟรมข้อมูล

รหัสต่อไปนี้แสดงวิธีใช้ setdiff() เพื่อระบุค่าทั้งหมดในคอลัมน์กรอบข้อมูลที่ไม่ปรากฏในคอลัมน์เดียวกันของกรอบข้อมูลที่สอง:

 #define data frames
df1 <- data. frame (team=c('A', 'B', 'C', 'D'),
                 conference=c('West', 'West', 'East', 'East'),
                 dots=c(88, 97, 94, 104))

df2 <- data. frame (team=c('A', 'B', 'C', 'D'),
                 conference=c('West', 'West', 'East', 'East'),
                 dots=c(88, 97, 98, 99))

#find differences between the points columns in the two data frames
setdiff (df1$points, df2$points)

[1] 94 104

เราจะเห็นว่าค่า 94 และ 104 ปรากฏในคอลัมน์จุดของกรอบข้อมูลแรก แต่ไม่ปรากฏในคอลัมน์จุดของกรอบข้อมูลที่สอง

แหล่งข้อมูลเพิ่มเติม

วิธีรวมคอลัมน์เฉพาะใน R
วิธีรวมแถวเฉพาะใน R
วิธีดำเนินการจับคู่สตริงบางส่วนใน R

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *