วิธีใช้ตัวกรองแบบมีเงื่อนไขใน dplyr


คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อใช้ตัวกรองแบบมีเงื่อนไขบนเฟรมข้อมูลโดยใช้ฟังก์ชันในแพ็คเกจ dplyr ใน R:

 library (dplyr)

#filter data frame where points is greater than some value (based on team)
df %>% 
  filter(case_when(team==' A ' ~ points > 15,
                   team==' B ' ~ points > 20,
                   TRUE ~ points > 30))

ตัวอย่างนี้กรองแถวในกรอบข้อมูลโดยที่ค่าของคอลัมน์ จุด มากกว่าค่าที่กำหนด โดยขึ้น อยู่กับค่าของคอลัมน์ ทีม โดยมีเงื่อนไข

ที่เกี่ยวข้อง: บทนำเกี่ยวกับ case_when() ใน dplyr

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

ตัวอย่าง: วิธีใช้ตัวกรองแบบมีเงื่อนไขใน dplyr

สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ใน R ซึ่งมีข้อมูลเกี่ยวกับผู้เล่นบาสเกตบอลต่างๆ:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'),
                 points=c(10, 12, 17, 18, 24, 29, 29, 34, 35))

#view data frame
df

  team points
1 to 10
2 to 12
3 to 17
4 B 18
5 B 24
6 B 29
7 C 29
8 C 34
9 C 35

ตอนนี้สมมติว่าเราต้องการใช้ตัวกรองแบบมีเงื่อนไขต่อไปนี้:

  • เก็บเฉพาะผู้เล่นทีม A ที่มีคะแนนมากกว่า 15 เท่านั้น
  • เก็บเฉพาะผู้เล่นทีม B ที่มีคะแนนมากกว่า 20 เท่านั้น
  • รักษาแถวไว้สำหรับผู้เล่นทีม C ที่มีคะแนนมากกว่า 30 เท่านั้น

เราสามารถใช้ฟังก์ชัน filter() และ case_when() จากแพ็คเกจ dplyr เพื่อใช้ตัวกรองแบบมีเงื่อนไขนี้กับ data frame:

 library (dplyr)

#filter data frame where points is greater than some value (based on team)
df %>% 
  filter(case_when(team==' A ' ~ points > 15,
                   team==' B ' ~ points > 20,
                   TRUE ~ points > 30))

  team points
1 to 17
2 B 24
3 B 29
4 C 34
5 C 35

ตอนนี้แถวในกรอบข้อมูลจะถูกกรองโดยที่ค่าในคอลัมน์ คะแนน มากกว่าค่าที่กำหนด โดยขึ้น อยู่กับค่าในคอลัมน์ ทีม โดยมีเงื่อนไข

หมายเหตุ #1 : ในฟังก์ชัน case_when() เราใช้ TRUE ในอาร์กิวเมนต์สุดท้ายเพื่อแสดงค่าทั้งหมดในคอลัมน์ทีมที่ไม่เท่ากับ “A” หรือ “B”

หมายเหตุ #2 : คุณสามารถค้นหาเอกสารฉบับเต็มสำหรับฟังก์ชัน dplyr case_when() ได้ที่นี่

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

บทช่วยสอนต่อไปนี้จะอธิบายวิธีการใช้งานฟังก์ชันทั่วไปอื่น ๆ ใน dplyr:

วิธีกรองตามหมายเลขแถวโดยใช้ dplyr
วิธีกรองตามเงื่อนไขต่างๆ โดยใช้ dplyr
วิธีใช้ตัวกรอง “ไม่รวม” ใน dplyr

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

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