ตอบ: วิธีจัดเรียงเฟรมข้อมูลโดยใช้แอตทริบิวต์ 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

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

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