คู่มือฉบับสมบูรณ์: วิธีใช้ sort(), order() และ rank() ใน r
ฟังก์ชันสามประการของ R ที่ผู้คนมักสับสนคือ การเรียงลำดับ การเรียงลำดับ และ การจัดอันดับ
นี่คือความแตกต่างระหว่างฟังก์ชันเหล่านี้:
- sort() จะเรียงลำดับเวกเตอร์จากน้อยไปหามาก
- order() จะส่งคืนดัชนีของแต่ละองค์ประกอบของเวกเตอร์ตามลำดับที่เรียงลำดับ
- Rank() จะกำหนดอันดับให้กับแต่ละองค์ประกอบของเวกเตอร์ (น้อยที่สุด = 1)
ตัวอย่างต่อไปนี้แสดงวิธีใช้แต่ละฟังก์ชันเหล่านี้ในทางปฏิบัติ
ตัวอย่าง: ใช้ sort(), order() และ Rank() กับเวกเตอร์
รหัสต่อไปนี้แสดงวิธีการใช้ฟังก์ชัน sort() , order() และ Rank() กับเวกเตอร์สี่ค่า:
#createvector
x <- c(0, 20, 10, 15)
#sort vector
sort(s)
[1] 0 10 15 20
#order vector
order(s)
[1] 1 3 4 2
#rank vector
rank(x)
[1] 1 4 2 3
นี่คือสิ่งที่แต่ละฟังก์ชันทำ:
1. ฟังก์ชัน sort() เพียงจัดเรียงค่าเวกเตอร์จากน้อยไปหามาก
2. ฟังก์ชัน order() ส่งคืนดัชนีของแต่ละองค์ประกอบตามลำดับที่เรียงลำดับ
- หากคุณใส่ค่าเวกเตอร์ดั้งเดิมตามลำดับตามค่าดัชนีเหล่านี้ คุณจะได้เวกเตอร์ที่เรียงลำดับ
- ตัวอย่างเช่น order() บอกให้เราใส่ค่าที่ตำแหน่งดัชนี 1 ก่อน นั่นคือ 0 ในเวกเตอร์ดั้งเดิม
- จากนั้น order() บอกให้เราใส่ค่าที่ตำแหน่งดัชนี 3 ซึ่งก็คือ 10 ในเวกเตอร์ดั้งเดิม
- จากนั้น order() บอกให้เราใส่ค่าที่ตำแหน่งดัชนี 4 ซึ่งก็คือ 15 ในเวกเตอร์ดั้งเดิม
- จากนั้น order() บอกให้เราใส่ค่าที่ตำแหน่งดัชนี 2 ซึ่งก็คือ 20 ในเวกเตอร์ดั้งเดิม
- ผลลัพธ์ที่ได้คือเวกเตอร์ที่เรียงลำดับ – 0, 10, 15, 20
3. ฟังก์ชัน Rank() กำหนดอันดับให้กับแต่ละองค์ประกอบของเวกเตอร์ โดยใช้ 1 สำหรับค่าที่น้อยที่สุด
- ตัวอย่างเช่น Rank() บอกเราว่าค่าแรกของเวกเตอร์ดั้งเดิมนั้นน้อยที่สุด (อันดับ = 1) และค่าที่สองของเวกเตอร์ดั้งเดิมนั้นใหญ่ที่สุด (อันดับ = 4)
โปรดทราบว่าเราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อใช้ sort() , order() และ rank() ในลำดับย้อนกลับ:
#createvector
x <- c(0, 20, 10, 15)
#sort vector in decreasing order
sort(x, decreasing= TRUE )
[1] 20 15 10 0
#order vector in decreasing order
order(x, decreasing= TRUE )
[1] 2 4 3 1
#rank vector in reverse order (largest value = 1)
rank(-x)
[1] 4 1 3 2
โปรดทราบว่าผลลัพธ์เหล่านี้ตรงกันข้ามกับผลลัพธ์ที่เกิดขึ้นในตัวอย่างก่อนหน้านี้ทุกประการ
หมายเหตุ: วิธีจัดการกับความสัมพันธ์ด้วยฟังก์ชัน Rank()
เราสามารถใช้อาร์กิวเมนต์ tie.method เพื่อระบุวิธีที่เราควรจัดการกับความสัมพันธ์เมื่อใช้ฟังก์ชัน Rank() :
rank(x, ties. method = ' average ')
คุณสามารถใช้ตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้เพื่อระบุวิธีจัดการลิงก์:
- เฉลี่ย : (ค่าเริ่มต้น) กำหนดอันดับเฉลี่ยให้กับแต่ละรายการที่เชื่อมโยง (รายการอันดับ 3 และ 4 ทั้งคู่จะได้รับอันดับ 3.5)
- first : กำหนดองค์ประกอบที่เชื่อมโยงแรกให้กับอันดับต่ำสุด (องค์ประกอบที่อยู่ในอันดับที่ 3 และ 4 จะได้รับอันดับที่ 3 และ 4 ตามลำดับ)
- min : กำหนดแต่ละรายการที่เชื่อมโยงไปยังอันดับต่ำสุด (รายการอันดับ 3 และ 4 ทั้งคู่จะได้รับอันดับ 3)
- max : กำหนดอันดับสูงสุดให้กับแต่ละรายการที่เชื่อมโยง (รายการอันดับ 3 และ 4 ทั้งคู่จะได้รับอันดับ 4)
- สุ่ม : กำหนดอันดับสุ่มให้กับแต่ละองค์ประกอบที่ผูกกัน (องค์ประกอบใด ๆ ที่เชื่อมโยงกับตำแหน่งที่ 3 และ 4 สามารถรับอันดับใดอันดับหนึ่งได้)
วิธีใดวิธีหนึ่งเหล่านี้อาจเหมาะสมกว่าการใช้วิธีอื่น ทั้งนี้ขึ้นอยู่กับสถานการณ์ของคุณ
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน R:
วิธีจัดเรียงตามหลายคอลัมน์ใน R
วิธีจัดเรียง data frame ตามวันที่ใน R
วิธีการคำนวณอันดับเปอร์เซ็นไทล์ใน R