Để sắp xếp một vectơ 1D hoặc một cột dữ liệu, chỉ cần gọi hàm sắp xếp và chuyển vào chuỗi của bạn.
Mặt khác, hàm thứ tự là cần thiết để sắp xếp dữ liệu dữ liệu hai chiều - tức là, nhiều cột dữ liệu được thu thập trong một ma trận hoặc khung dữ liệu.
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
Đây là phần trích dẫn dữ liệu về các lần ghi bàn trong mùa giải NFL 2008, khung dữ liệu mà tôi gọi là 'fg'. giả sử rằng 10 điểm dữ liệu này đại diện cho tất cả các mục tiêu thực địa được thực hiện trong năm 2008; hơn nữa, giả sử bạn muốn biết khoảng cách của bàn thắng dài nhất trong năm đó, ai đã đá nó, và nó có tốt hay không; bạn cũng muốn biết dài thứ hai, cũng như dài thứ ba, v.v.; và cuối cùng bạn muốn có mục tiêu trường ngắn nhất.
Chà, bạn chỉ có thể làm điều này:
sort(fg$Dist, decreasing=T)
trả về: 50 48 43 37 34 32 26 25 25 20
Điều đó đúng, nhưng không hữu ích lắm - nó cho chúng ta biết khoảng cách của nỗ lực ghi bàn dài nhất, xa nhất thứ hai, ... cũng như ngắn nhất; tuy nhiên, nhưng đó là tất cả những gì chúng tôi biết - ví dụ: chúng tôi không biết ai là người thực hiện cú hích, liệu nỗ lực có thành công hay không, v.v. Tất nhiên, chúng tôi cần toàn bộ khung dữ liệu được sắp xếp trên cột "Dist" (nói cách khác, chúng tôi muốn sắp xếp tất cả các hàng dữ liệu trên Quận thuộc tính đơn lẻ trông giống như sau:
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
Đây là những gì đơn đặt hàng làm. Nó là 'sắp xếp' cho dữ liệu hai chiều; nói cách khác, nó trả về chỉ số số nguyên 1D bao gồm các số hàng để sắp xếp các hàng theo vectơ đó, sẽ cung cấp cho bạn một sắp xếp theo hướng hàng chính xác trên cột, Dist
Đây là cách nó hoạt động. Ở trên, sắp xếp được sử dụng để sắp xếp cột Dist; để sắp xếp toàn bộ khung dữ liệu trên cột Dist, chúng tôi sử dụng 'order' giống hệt như cách 'sort' được sử dụng ở trên :
ndx = order(fg$Dist, decreasing=T)
(tôi thường liên kết mảng được trả về từ 'order' với biến 'ndx', viết tắt của 'index', vì tôi sẽ sử dụng nó như một mảng chỉ mục để sắp xếp.)
đó là bước 1, đây là bước 2:
'ndx', thứ được trả về bởi 'sort' sau đó được sử dụng như một mảng chỉ mục để sắp xếp lại khung dữ liệu, 'fg':
fg_sorted = fg[ndx,]
fg_sorted là khung dữ liệu được sắp xếp lại ngay trên.
Tóm lại, 'sắp xếp' được sử dụng để tạo một mảng chỉ mục (chỉ định thứ tự sắp xếp của cột bạn muốn sắp xếp), sau đó được sử dụng như một mảng chỉ mục để sắp xếp lại khung dữ liệu (hoặc ma trận).