ในการจัดเรียงเวกเตอร์ 1D หรือข้อมูลคอลัมน์เดียวเพียงแค่เรียกใช้ฟังก์ชันsortและส่งต่อตามลำดับของคุณ
ในทางกลับกันฟังก์ชันลำดับมีความจำเป็นในการจัดเรียงข้อมูลข้อมูลสองมิตินั่นคือข้อมูลหลายคอลัมน์ที่รวบรวมในเมทริกซ์หรือดาต้าเฟรม
Stadium Home Week Qtr Away Off Def Result Kicker Dist
751 Out PHI 14 4 NYG PHI NYG Good D.Akers 50
491 Out KC 9 1 OAK OAK KC Good S.Janikowski 32
702 Out OAK 15 4 CLE CLE OAK Good P.Dawson 37
571 Out NE 1 2 OAK OAK NE Missed S.Janikowski 43
654 Out NYG 11 2 PHI NYG PHI Good J.Feely 26
307 Out DEN 14 2 BAL DEN BAL Good J.Elam 48
492 Out KC 13 3 DEN KC DEN Good L.Tynes 34
691 Out NYJ 17 3 BUF NYJ BUF Good M.Nugent 25
164 Out CHI 13 2 GB CHI GB Good R.Gould 25
80 Out BAL 1 2 IND IND BAL Good M.Vanderjagt 20
นี่คือข้อมูลที่ตัดตอนมาสำหรับการพยายามยิงประตูในฤดูกาล 2008 NFL ซึ่งเป็นดาต้าเฟรมที่ฉันเรียกว่า 'fg' สมมติว่าจุดข้อมูล 10 จุดนี้แสดงถึงเป้าหมายภาคสนามทั้งหมดที่พยายามในปี 2008 ต่อไปสมมติว่าคุณต้องการทราบระยะห่างของการยิงประตูที่ยาวที่สุดในปีนั้นใครเตะและทำได้ดีหรือไม่ คุณยังต้องการทราบว่ายาวเป็นอันดับสองและยาวเป็นอันดับสาม ฯลฯ ; และในที่สุดคุณก็ต้องการความพยายามในการยิงประตูที่สั้นที่สุด
คุณสามารถทำได้:
sort(fg$Dist, decreasing=T)
ซึ่งผลตอบแทน: 50 48 43 37 34 32 26 25 25 20
นั่นถูกต้อง แต่ไม่มีประโยชน์มากนัก - มันบอกเราถึงระยะทางของการยิงประตูที่ไกลที่สุดระยะที่สองที่ยาวที่สุด ... และสั้นที่สุด แต่นั่นคือทั้งหมดที่เรารู้ - เช่นเราไม่รู้ว่าใครคือนักเตะความพยายามนั้นสำเร็จหรือไม่ ฯลฯ แน่นอนว่าเราต้องการดาต้าเฟรมทั้งหมดที่จัดเรียงในคอลัมน์ "Dist" (พูดอีกอย่างเรา ต้องการจัดเรียงแถวข้อมูลทั้งหมดบนแอตทริบิวต์เดียวDist . ซึ่งจะมีลักษณะดังนี้:
Stadium Home Week Qtr Away Off Def Result Kicker Dist
751 Out PHI 14 4 NYG PHI NYG Good D.Akers 50
307 Out DEN 14 2 BAL DEN BAL Good J.Elam 48
571 Out NE 1 2 OAK OAK NE Missed S.Janikowski 43
702 Out OAK 15 4 CLE CLE OAK Good P.Dawson 37
492 Out KC 13 3 DEN KC DEN Good L.Tynes 34
491 Out KC 9 1 OAK OAK KC Good S.Janikowski 32
654 Out NYG 11 2 PHI NYG PHI Good J.Feely 26
691 Out NYJ 17 3 BUF NYJ BUF Good M.Nugent 25
164 Out CHI 13 2 GB CHI GB Good R.Gould 25
80 Out BAL 1 2 IND IND BAL Good M.Vanderjagt 20
นี่คือสิ่งที่สั่งทำ มันคือ 'เรียงลำดับ' สำหรับข้อมูลสองมิติ อีกวิธีหนึ่งคือส่งคืนดัชนีจำนวนเต็ม 1D ซึ่งประกอบด้วยหมายเลขแถวซึ่งการจัดเรียงแถวตามเวกเตอร์นั้นจะทำให้คุณมีการจัดเรียงแถวที่ถูกต้องบนคอลัมน์Dist
นี่คือวิธีการทำงาน ข้างต้นเรียงลำดับได้ถูกใช้ในการจัดเรียงคอลัมน์ Dist; ในการจัดเรียง dataframe ทั้งหมดในคอลัมน์ Dist เราใช้ 'order' แบบเดียวกับที่ใช้ 'sort' ด้านบน :
ndx = order(fg$Dist, decreasing=T)
(ฉันมักจะผูกอาร์เรย์ที่ส่งคืนจาก 'order' กับตัวแปร 'ndx' ซึ่งย่อมาจาก 'index' เพราะฉันจะใช้เป็นดัชนีอาร์เรย์เพื่อจัดเรียง)
นั่นคือขั้นตอนที่ 1 นี่คือขั้นตอนที่ 2:
'ndx' สิ่งที่ส่งคืนโดย 'sort' จะถูกใช้เป็นอาร์เรย์ดัชนีเพื่อจัดลำดับดาต้าเฟรมใหม่ 'fg':
fg_sorted = fg[ndx,]
fg_sorted คือ dataframe ที่สั่งซื้อใหม่ทันทีด้านบน
โดยรวมแล้ว 'sort' ใช้เพื่อสร้างดัชนีอาร์เรย์ (ซึ่งระบุลำดับการจัดเรียงของคอลัมน์ที่คุณต้องการจัดเรียง) ซึ่งจะใช้เป็นอาร์เรย์ดัชนีเพื่อจัดลำดับดาต้าเฟรม (หรือเมทริกซ์) ใหม่