วิธีจัดกลุ่มและกรองข้อมูลโดยใช้ dplyr
คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อจัดกลุ่มและกรองข้อมูลโดยใช้แพ็คเกจ dplyr ใน R:
df %>% group_by(team) %>% filter(any(points = = 10 ))
ไวยากรณ์เฉพาะนี้จะจัดกลุ่มกรอบข้อมูลต่อคอลัมน์ที่เรียกว่า ทีม และกรองเฉพาะกลุ่มที่มีค่าอย่างน้อยหนึ่งค่าในคอลัมน์ คะแนน เท่ากับ 10
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ
ตัวอย่าง: จัดกลุ่มตามและกรองข้อมูลโดยใช้ dplyr
สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ใน R ซึ่งมีข้อมูลเกี่ยวกับผู้เล่นบาสเกตบอลต่างๆ:
#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'),
points=c(10, 15, 8, 4, 10, 10, 12, 12, 7))
#view data frame
df
team points
1 to 10
2 to 15
3 to 8
4 B 4
5 B 10
6 B 10
7 C 12
8 C 12
9 C 7
เราสามารถใช้โค้ดต่อไปนี้เพื่อจัดกลุ่มกรอบข้อมูลตามค่าในคอลัมน์ Team จากนั้นกรองกลุ่มทั้งหมดที่ไม่มีค่าอย่างน้อยหนึ่งค่าในคอลัมน์ Points เท่ากับ 10 ออก:
library (dplyr)
#group by team and filter out teams where no points value is equal to 10
df %>%
group_by(team) %>%
filter(any(points == 10 ))
# A tibble: 6 x 2
# Groups: team [2]
team points
1 to 10
2 to 15
3 to 8
4 B 4
5 B 10
6 B 10
โปรดทราบว่าทุกแถวที่ ทีม เท่ากับ “C” จะถูกกรองเนื่องจากไม่มีค่าในคอลัมน์ คะแนน สำหรับทีม “C” เท่ากับ 10
โปรดทราบว่านี่เป็นเพียงตัวอย่างตัวกรองที่เราสามารถใช้ได้
ตัวอย่างเช่น เราสามารถใช้ตัวกรองอื่นซึ่งเรากรองทีมที่มีค่าอย่างน้อยหนึ่งค่าในคอลัมน์ คะแนน ที่มากกว่า 13:
library (dplyr)
#group by team and filter out teams where no points value is greater than 13
df %>%
group_by(team) %>%
filter(any(points > 13 ))
# A tibble: 3 x 2
# Groups: team [1]
team points
1 to 10
2 to 15
3 to 8
โปรดทราบว่าจะเก็บเฉพาะแถวที่ ทีม เท่ากับ “A” เนื่องจากเป็นทีมเดียวที่มีค่าคะแนนอย่างน้อยหนึ่ง แต้ม มากกว่า 13
หมายเหตุ : คุณสามารถค้นหาเอกสารฉบับเต็มของฟังก์ชัน ตัวกรอง ได้ใน dplyr ที่นี่
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่น ๆ ใน dplyr:
วิธีเลือกแถวแรกตามกลุ่มโดยใช้ dplyr
วิธีกรองตามเงื่อนไขต่างๆ โดยใช้ dplyr
วิธีกรองแถวที่มีสตริงบางตัวโดยใช้ dplyr