ตอบ: วิธีจัดเรียงเฟรมข้อมูลโดยใช้แอตทริบิวต์ row.names
คุณสามารถใช้สองวิธีต่อไปนี้เพื่อจัดเรียงเฟรมข้อมูลใน R โดยใช้แอตทริบิวต์ row.names :
วิธีที่ 1: จัดเรียงโดยใช้อักขระ row.names
df[order( row.names (df)), ]
วิธีที่ 2: เรียงลำดับโดยใช้แถวตัวเลข
df[order(as. numeric (row. names (df))), ]
ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติ
ตัวอย่างที่ 1: จัดเรียงกรอบข้อมูลโดยใช้ชื่อแถวอักขระ
สมมติว่าเรามี data frame ต่อไปนี้ใน R:
#create data frame
df <- data. frame (position=c('G', 'G', 'F', 'F', 'C'),
points=c(99, 90, 86, 88, 95),
assists=c(33, 28, 31, 39, 34),
rebounds=c(30, 28, 24, 24, 28))
#set row names of data frame
row. names (df) <- c('A', 'C', 'E', 'D', 'B')
#view data frame
df
position points assists rebounds
GA 99 33 30
CG 90 28 28
EF 86 31 24
FD 88 39 24
BC 95 34 28
เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อเรียงลำดับแถวในกรอบข้อมูลตามตัวอักษรโดยใช้แอตทริบิวต์ row.names :
#sort rows alphabetically using row.names
df[order( row.names (df)), ]
position points assists rebounds
GA 99 33 30
BC 95 34 28
CG 90 28 28
FD 88 39 24
EF 86 31 24
แถวจะถูกจัดเรียงจาก A ถึง Z ตามค่าชื่อแถว
คุณยังสามารถใช้อาร์กิวเมนต์ จากมากไปน้อย=TRUE เพื่อเรียงลำดับจาก Z ถึง A:
#sort rows from Z to A using row.names
df[order(row. names (df), decreasing= TRUE ), ]
position points assists rebounds
EF 86 31 24
FD 88 39 24
CG 90 28 28
BC 95 34 28
GA 99 33 30
ตัวอย่างที่ 2: จัดเรียงกรอบข้อมูลโดยใช้ชื่อแถวตัวเลข
สมมติว่าเรามี data frame ต่อไปนี้ใน R:
#create data frame
df <- data. frame (position=c('G', 'G', 'F', 'F', 'C'),
points=c(99, 90, 86, 88, 95),
assists=c(33, 28, 31, 39, 34),
rebounds=c(30, 28, 24, 24, 28))
#set row names of data frame
row. names (df) <- c(1, 100, 4, 12, 19)
#view data frame
df
position points assists rebounds
1G 99 33 30
100G 90 28 28
4 F 86 31 24
12 F 88 39 24
19 C 95 34 28
เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อเรียงลำดับแถวในกรอบข้อมูลโดยใช้แอตทริบิวต์ row.names :
#sort by row names from smallest to largest
df[order(as. numeric (row. names (df))), ]
position points assists rebounds
1G 99 33 30
4 F 86 31 24
12 F 88 39 24
19 C 95 34 28
100G 90 28 28
นอกจากนี้เรายังสามารถใช้จาก มากไปน้อย=TRUE เพื่อเรียงลำดับจากมากไปน้อย:
#sort by row names from largest to smallest
df[order(as. numeric (row. names (df)), decreasing= TRUE ), ]
position points assists rebounds
100G 90 28 28
19 C 95 34 28
12 F 88 39 24
4 F 86 31 24
1G 99 33 30
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน R:
วิธีใช้ sort(), order() และ Rank() ใน R
วิธีจัดเรียงตามหลายคอลัมน์ใน R
วิธีจัดเรียง data frame ตามวันที่ใน R