วิธีจัดกลุ่มและกรองข้อมูลโดยใช้ 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

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

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