วิธีจัดระเบียบแถวตามกลุ่มโดยใช้ dplyr (พร้อมตัวอย่าง)
คุณสามารถใช้วิธีต่อไปนี้เพื่อจัดระเบียบแถวตามกลุ่มใน dplyr:
วิธีที่ 1: จัดเรียงแถวตามลำดับจากน้อยไปมากตามกลุ่ม
library (dplyr) #arrange rows in ascending order based on col2, grouped by col1 df %>% group_by(col1) %>% arrange(col2, . by_group = TRUE )
วิธีที่ 2: จัดเรียงแถวตามลำดับจากมากไปน้อยตามกลุ่ม
library (dplyr) #arrange rows in descending order based on col2, grouped by col1 df %>% group_by(col1) %>% arrange( desc (col2), . by_group = TRUE )
วิธีที่ 3: จัดระเบียบบรรทัดตามหลายกลุ่ม
library (dplyr) #arrange rows based on col3, grouped by col1 and col2 df %>% group_by(col1, col2) %>% arrange(col3, . by_group = TRUE )
บทช่วยสอนนี้จะอธิบายวิธีการใช้แต่ละวิธีในทางปฏิบัติกับกรอบข้อมูลต่อไปนี้:
#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
position=c('G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'),
points=c(10, 12, 3, 14, 22, 15, 17, 17))
#view data frame
df
team position points
1 AG 10
2 AG 12
3 AF 3
4 AF 14
5 BG 22
6 BG 15
7 BF 17
8 BF 17
ตัวอย่างที่ 1: จัดเรียงแถวตามลำดับจากน้อยไปมากตามกลุ่ม
รหัสต่อไปนี้แสดงวิธีการจัดเรียงแถวตามลำดับจากน้อยไปหามากโดยอิงจาก คะแนน จัดกลุ่มตามคอลัมน์ ทีม :
library (dplyr)
#arrange rows in ascending order by points, grouped by team
df %>%
group_by(team) %>%
arrange(points, . by_group = TRUE )
# A tibble: 8 x 3
# Groups: team [2]
team position points
1 AF 3
2 AG 10
3 AG 12
4 AF 14
5 BG 15
6 BF 17
7 BF 17
8 BG 22
เส้นต่างๆ เรียงลำดับจากน้อยไปหามาก (เล็กที่สุดไปหาใหญ่ที่สุด) ตาม จุด จัดกลุ่มตามคอลัมน์ ทีม
ตัวอย่างที่ 2: จัดเรียงแถวตามลำดับจากมากไปน้อยตามกลุ่ม
รหัสต่อไปนี้แสดงวิธีจัดเรียงแถวตามลำดับจากมากไปหาน้อยโดยอิงจาก คะแนน จัดกลุ่มตามคอลัมน์ ทีม :
library (dplyr)
#arrange rows in descending order by points, grouped by team
df %>%
group_by(team) %>%
arrange( desc (dots), .by_group = TRUE )
# A tibble: 8 x 3
# Groups: team [2]
team position points
1 AF14
2 AG 12
3 AG 10
4 AF 3
5 BG 22
6 BF 17
7 BF 17
8 BG 15
แถวจะแสดงตามลำดับจากมากไปน้อย (มากไปน้อย) ตาม จุด จัดกลุ่มตามคอลัมน์ ทีม
ตัวอย่างที่ 3: จัดระเบียบบรรทัดตามหลายกลุ่ม
รหัสต่อไปนี้แสดงวิธีการจัดเรียงแถวตามลำดับ จาก น้อยไปหามากโดยอิงจากคะแนน จัดกลุ่มตามคอลัมน์ ทีม และ ตำแหน่ง :
library (dplyr)
#arrange rows in descending order by points, grouped by team and position
df %>%
group_by(team, position) %>%
arrange(points, . by_group = TRUE )
# A tibble: 8 x 3
# Groups: team, position [4]
team position points
1 AF 3
2 AF14
3 AG 10
4 AG 12
5 BF 17
6 BF 17
7 BG 15
8 BG 22
เส้นต่างๆ เรียงลำดับจากน้อยไปหามาก (เล็กที่สุดไปหาใหญ่ที่สุด) ตาม จุด จัดกลุ่มตามคอลัมน์ ทีม และ ตำแหน่ง
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน R:
วิธีกรองค่าที่ไม่ซ้ำโดยใช้ dplyr
วิธีกรองตามเงื่อนไขต่างๆ โดยใช้ dplyr
วิธีนับจำนวนครั้งที่เกิดขึ้นในคอลัมน์ใน R