ตอบ: ลบแถวออกจาก data frame ตามเงื่อนไข


คุณสามารถใช้ฟังก์ชัน subset() เพื่อลบแถวที่มีค่าบางอย่างในกรอบข้อมูลใน R:

 #only keep rows where col1 value is less than 10 and col2 value is less than 8
new_df <- subset(df, col1 < 10 & col2< 8 ) 

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

 #create data frame
df <- data. frame (a=c(1, 3, 4, 6, 8, 9),
                 b=c(7, 8, 8, 7, 13, 16),
                 c=c(11, 13, 13, 18, 19, 22),
                 d=c(12, 16, 18, 22, 29, 38))

#view data frame
df

  abcd
1 1 7 11 12
2 3 8 13 16
3 4 8 13 18
4 6 7 18 22
5 8 13 19 29
6 9 16 22 38

ตัวอย่างที่ 1: ลบแถวที่เท่ากับค่าที่กำหนด

รหัสต่อไปนี้แสดงวิธีการลบแถวทั้งหมดที่มีค่าในคอลัมน์ “c” เท่ากับ 13:

 #remove rows where column 'c' is equal to 13
new_df <- subset(df, c != 13) 

#view updated data frame
new_df

  abcd
1 1 7 11 12
4 6 7 18 22
5 8 13 19 29
6 9 16 22 38

ตัวอย่างที่ 2: ลบแถวที่เท่ากับค่าใดค่าหนึ่งจากหลายค่า

รหัสต่อไปนี้แสดงวิธีการลบแถวทั้งหมดที่มีค่าในคอลัมน์ “b” เท่ากับ 7 หรือ 8:

 #remove rows where value in column b is equal to 7 or 8
new_df <- subset(df, ! (b %in% c(7, 8)))

#view updated data frame
new_df

  abcd
5 8 13 19 29
6 9 16 22 38

ตัวอย่างที่ 3: ลบแถวตามเงื่อนไขหลายข้อ

รหัสต่อไปนี้แสดงวิธีการลบแถวทั้งหมดที่มีค่าของคอลัมน์ “b” เท่ากับ 7 หรือโดยที่ค่าของคอลัมน์ “d” เท่ากับ 38:

 #remove rows where value in column b is 7 or value in column d is 38
new_df <- subset(df, b != 7 & d != 38)

#view updated data frame
new_df

  abcd
2 3 8 13 16
3 4 8 13 18
5 8 13 19 29

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

วิธีลบบรรทัดที่ซ้ำกันใน R
วิธีใช้ตัวดำเนินการ %in% ใน R
วิธีบันทึกค่าใหม่ใน R

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

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