วิธีจัดเรียงตัวแปรตามกลุ่มโดยใช้ dplyr


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

 df %>% arrange (group_var, numeric_var) %>%
    group_by (group_var) %>% 
    mutate (rank = rank(numeric_var))

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

 #create data frame
df <- data. frame (team = c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'),
                 points = c(12, 28, 19, 22, 32, 45, 22, 28, 13, 19),
                 rebounds = c(5, 7, 7, 12, 11, 4, 10, 7, 8, 8))

#view data frame
df

   team points rebounds
1 to 12 5
2 to 28 7
3 to 19 7
4 A 22 12
5 B 32 11
6 B 45 4
7 B 22 10
8 C 28 7
9 C 13 8
10 C 19 8

ตัวอย่างที่ 1: การจัดอันดับจากน้อยไปหามาก

รหัสต่อไปนี้แสดงวิธีการเรียงลำดับคะแนนที่ผู้เล่นทำคะแนนจากน้อยไปหามาก โดยจัดกลุ่มตามทีม:

 library (dplyr)

#rank points scored, grouped by team
df %>% arrange (team, points) %>%
    group_by (team) %>% 
    mutate (rank = rank(points))

# A tibble: 10 x 4
# Groups: team [3]
   team points rebounds rank
          
 1 A 12 5 1
 2 A 19 7 2
 3 A 22 12 3
 4 A 28 7 4
 5 B 22 10 1
 6 B 32 11 2
 7 B 45 4 3
 8 C 13 8 1
 9 C 19 8 2
10 C 28 7 3

ตัวอย่างที่ 2: การจัดอันดับจากมากไปน้อย

นอกจากนี้เรายังสามารถจำแนกคะแนนที่ได้ตามลำดับจากมากไปน้อยตามกลุ่ม โดยใช้เครื่องหมายลบภายในฟังก์ชัน Rank() :

 library (dplyr)

#rank points scored in reverse, grouped by team
df %>% arrange (team, points) %>%
    group_by (team) %>% 
    mutate (rank = rank(-points))

# A tibble: 10 x 4
# Groups: team [3]
   team points rebounds rank
          
 1 to 12 5 4
 2 A 19 7 3
 3 A 22 12 2
 4 A 28 7 1
 5 B 22 10 3
 6 B 32 11 2
 7 B 45 4 1
 8 C 13 8 3
 9 C 19 8 2
10 C 28 7 1

วิธีจัดการกับความสัมพันธ์ในการจัดอันดับ

เราสามารถใช้อาร์กิวเมนต์ tie.method เพื่อระบุวิธีที่เราควรจัดการกับความสัมพันธ์เมื่อเรียงลำดับค่าตัวเลข

 rank(points, ties. method = ' average ')

คุณสามารถใช้ตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้เพื่อระบุวิธีจัดการลิงก์:

  • เฉลี่ย : (ค่าเริ่มต้น) ให้แต่ละรายการที่เชื่อมโยงมีอันดับเฉลี่ย (รายการอันดับ 3 และ 4 ทั้งคู่จะได้รับอันดับ 3.5)
  • first : กำหนดองค์ประกอบที่เชื่อมโยงแรกให้กับอันดับต่ำสุด (องค์ประกอบที่อยู่ในอันดับที่ 3 และ 4 จะได้รับอันดับที่ 3 และ 4 ตามลำดับ)
  • min : กำหนดแต่ละรายการที่เชื่อมโยงไปยังอันดับต่ำสุด (รายการอันดับ 3 และ 4 ทั้งคู่จะได้รับอันดับ 3)
  • max : กำหนดอันดับสูงสุดให้กับแต่ละรายการที่เชื่อมโยง (รายการอันดับ 3 และ 4 ทั้งคู่จะได้รับอันดับ 4)
  • สุ่ม : กำหนดอันดับสุ่มให้กับแต่ละองค์ประกอบที่ผูกกัน (องค์ประกอบใดองค์ประกอบหนึ่งที่เชื่อมโยงกับตำแหน่งที่ 3 และ 4 สามารถรับอันดับใดอันดับหนึ่งได้)

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

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

วิธีเลือกแถวแรกตามกลุ่มโดยใช้ dplyr
วิธีการคำนวณความถี่สัมพัทธ์โดยใช้ dplyr
วิธีบันทึกค่าใหม่โดยใช้ dplyr
วิธีแทนที่ NA ด้วย Zero ใน dplyr

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

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