วิธีกรองแถวที่มีสตริงบางตัวโดยใช้ dplyr


บ่อยครั้งคุณอาจต้องการกรองแถวใน data frame ใน R ที่มีสตริงบางตัว โชคดีที่ทำได้ง่ายโดยใช้ฟังก์ชัน filter() ในแพ็คเกจ dplyr และฟังก์ชัน grepl() ใน Base R

บทช่วยสอนนี้แสดงตัวอย่างการใช้งานจริงของฟังก์ชันเหล่านี้โดยใช้กรอบข้อมูลต่อไปนี้:

 #create data frame
df <- data.frame(player = c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center'),
                 points = c(12, 15, 19, 22, 32),
                 rebounds = c(5, 7, 7, 12, 11))

#view data frame
df

     player points rebounds
1 P Guard 12 5
2 S Guard 15 7
3S Forward 19 7
4 P Forward 22 12
5 Center 32 11

ตัวอย่างที่ 1: กรองแถวที่มีสตริงบางตัว

รหัสต่อไปนี้แสดงวิธีการกรองแถวที่มีสตริงบางอย่าง:

 #load dplyr package
library(dplyr)

#filter rows that contain the string 'Guard' in the player column
df %>% filter ( grepl ('Guard', player))

   player points rebounds
1 P Guard 12 5
2 S Guard 15 7

ที่เกี่ยวข้อง: การเปรียบเทียบ grep() และ grepl() ใน R: อะไรคือความแตกต่าง?

ตัวอย่างที่ 2: กรองแถวที่มีอย่างน้อยหนึ่งสตริง

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

 #filter rows that contain 'Guard' or 'Forward' in the player column
df %>% filter ( grepl ('Guard|Forward', player))

     player points rebounds
1 P Guard 12 5
2 S Guard 15 7
3S Forward 19 7
4 P Forward 22 12

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

 #filter rows that contain 'P' or 'Center' in the player column
df %>% filter ( grepl ('P|Center', player))

     player points rebounds
1 P Guard 12 5
2 P Forward 22 12
3 Center 32 11

ตัวอย่างที่ 3: กรองแถวที่มีสตริงบางตัว

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

 #filter out rows that contain 'Guard' in the player column
df %>% filter (! grepl ('Guard', player))

     player points rebounds
1S Forward 19 7
2 P Forward 22 12
3 Center 32 11

รหัสต่อไปนี้แสดงวิธีการกรอง (เช่น ลบ) แถวที่มี “Guard” หรือ “Center” ในคอลัมน์ผู้เล่น:

 #filter out rows that contain 'Guard' or 'Center' in the player column
df %>% filter (! grepl ('Guard|Center', player))

     player points rebounds
1S Forward 19 7
2 P Forward 22 12

คุณสามารถค้นหาบทช่วยสอน R เพิ่มเติมได้ ที่นี่

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

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