วิธีใช้ตัวดำเนินการ "not in" ใน r (พร้อมตัวอย่าง)


คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อเลือกองค์ประกอบทั้งหมดที่ไม่อยู่ในรายการค่าใน R:

 ! (data %in% c(value1, value2, value3, ...))

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ

ตัวอย่างที่ 1: วิธีใช้ “NOT IN” กับเวกเตอร์

รหัสต่อไปนี้แสดงวิธีการเลือกค่าทั้งหมดของเวกเตอร์ใน R ที่ไม่ได้อยู่ในรายการค่าที่แน่นอน:

 #define numeric vector
num_data <- c(1, 2, 3, 3, 4, 4, 5, 5, 6)

#display all values in vector not equal to 3 or 4
num_data[ ! (num_data %in% c(3, 4))]

[1] 1 2 5 5 6

ค่าทั้งหมดที่ ไม่เท่ากับ 3 หรือ 4 จะแสดงในเอาต์พุต

โปรดทราบว่าเราสามารถใช้ไวยากรณ์เดียวกันเพื่อเลือกองค์ประกอบทั้งหมดของเวกเตอร์ที่ไม่อยู่ในรายการอักขระบางตัว:

 #define vector of character data
char_data <- c('A', 'A', 'A', 'B', 'B', 'C', 'C', 'D', 'D', 'D')

#display all elements in vector not equal to 'A', or 'C'
char_data[ ! (char_data %in% c('A', 'C'))]

[1] “B” “B” “D” “D” “D”

ค่าใด ๆ ที่ ไม่เท่ากับ “A” หรือ “C” จะแสดงในเอาต์พุต

ตัวอย่างที่ 2: วิธีใช้ “NOT IN” กับเฟรมข้อมูล

รหัสต่อไปนี้แสดงวิธีการเลือกแถวทั้งหมดของกรอบข้อมูลใน R ซึ่งบางคอลัมน์ไม่เท่ากับค่าที่กำหนด:

 #create data frame
df <- data. frame (team=c('A', 'A', 'B', 'B', 'C', 'C', 'D'),
                 points=c(77, 81, 89, 83, 99, 92, 97),
                 assists=c(19, 22, 29, 15, 32, 39, 14))

#view data frame
df

  team points assists
1 A 77 19
2 A 81 22
3 B 89 29
4 B 83 15
5 C 99 32
6 C 92 39
7 D 97 14

#select all rows where team is not equal to 'A' or 'B'
subset(df, ! (team %in% c('A', 'B')))

  team points assists
5 C 99 32
6 C 92 39
7 D 97 14

โปรดทราบว่าแถวใดๆ ที่ไม่มี “A” หรือ “B” ในคอลัมน์ทีมจะถูกส่งกลับ

นอกจากนี้เรายังสามารถใช้ไวยากรณ์ที่คล้ายกันเพื่อเลือกแถวทั้งหมดที่คอลัมน์ใดคอลัมน์หนึ่งไม่เท่ากับค่าตัวเลขบางค่า:

 #create data frame
df <- data. frame (team=c('A', 'A', 'B', 'B', 'C', 'C', 'D'),
                 points=c(77, 81, 89, 83, 99, 92, 97),
                 assists=c(19, 22, 29, 15, 32, 39, 14))

#view data frame
df

  team points assists
1 A 77 19
2 A 81 22
3 B 89 29
4 B 83 15
5 C 99 32
6 C 92 39
7 D 97 14

#select all rows where team is not equal to 'A' or 'B'
subset(df, ! (points %in% c(89, 99)))

  team points assists
1 A 77 19
2 A 81 22
4 B 83 15
6 C 92 39
7 D 97 14

โปรดทราบว่าระบบจะส่งกลับแถวทั้งหมดที่ไม่เท่ากับ 89 หรือ 99 ในคอลัมน์คะแนน

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

วิธีใช้ตัวดำเนินการ %in% ใน R
วิธีเซ็ตย่อย data frame ใน R
วิธีแบ่งย่อยรายการใน R

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

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