วิธีจัดเรียงแถวตามลำดับที่กำหนดเองโดยใช้ dplyr


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

 library (dplyr)

#arrange rows in custom order based on values in 'team' column
df %>%
  arrange(match(team, c(' C ', ' B ', ' D ', ' A ')), points)

ตัวอย่างนี้จะจัดเรียงแถวตามลำดับที่กำหนดเอง C, B, D, A สำหรับค่าคอลัมน์ ทีม จากนั้นตามลำดับค่าคอลัมน์ คะแนน จากน้อยไปมาก

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

ตัวอย่าง: วิธีจัดเรียงแถวตามลำดับที่กำหนดเองโดยใช้ dplyr

สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ซึ่งแสดงคะแนนที่ผู้เล่นบาสเก็ตบอลจากทีมต่างๆ ทำไว้:

 #create data frame
df <- data. frame (team=c('A', 'B', 'A', 'A', 'B', 'D', 'C', 'D', 'D', 'C'),
                 points=c(12, 20, 14, 34, 29, 22, 28, 15, 20, 13))

#view data frame
df

   team points
1 to 12
2 B 20
3 to 14
4 to 34
5 B 29
6 D 22
7 C 28
8 D 15
9 D 20
10 C 13

หากเราใช้ฟังก์ชัน Arrange() เพื่อจัดเรียงแถวตามค่าในคอลัมน์ ทีม จากนั้นตามค่าในคอลัมน์ Points ฟังก์ชัน Arrange() จะเรียงลำดับแถวตามลำดับตัวอักษรเริ่มต้น : :

 library (dplyr)

#arrange rows in ascending order by team, then by points
df %>%
  arrange(team, points)

   team points
1 to 12
2 to 14
3 to 34
4 B 20
5 B 29
6 C 13
7 C 28
8 D 15
9 D 20
10 D 22

เส้นจะแสดงตามลำดับตัวอักษรตาม ทีม จากนั้นเรียงลำดับจากน้อยไปหามากตาม จุด

อย่างไรก็ตาม สมมติว่าเราต้องการจัดเรียงบรรทัดตามลำดับค่า ทีม ต่อไปนี้แทน: C, B, D, A

เราสามารถใช้ฟังก์ชัน match() ภายในฟังก์ชัน Arrange() เพื่อทำสิ่งนี้:

 library (dplyr)

#arrange rows in custom order based on 'team' column, then by 'points' column
df %>%
  arrange(match(team, c(' C ', ' B ', ' D ', ' A ')), points)

   team points
1 C 13
2 C 28
3 B 20
4 B 29
5 D 15
6 D 20
7 D 22
8 to 12
9 to 14
10 to 34

แถวต่างๆ จะถูกจัดเรียงตามลำดับที่กำหนดเองที่เราระบุ (C, B, D, A) สำหรับคอลัมน์ ทีม ตามด้วยคอลัมน์ คะแนน

หมายเหตุ #1 : ฟังก์ชัน การจับคู่ จะได้รับดัชนีแถวของค่าในคอลัมน์ทีม จากนั้นฟังก์ชัน การจัดเรียง จะสามารถเรียงลำดับตามค่าดัชนีเหล่านี้ได้

หมายเหตุ #2 : หากต้องการจัดเรียงโดยการลดค่าจุด เพียงใช้ desc(points) แทน

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

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน R:

วิธีจัดระเบียบแถวตามกลุ่มโดยใช้ dplyr
วิธีกรองค่าที่ไม่ซ้ำโดยใช้ dplyr
วิธีกรองตามเงื่อนไขต่างๆ โดยใช้ dplyr

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

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