Để sắp xếp vector 1D hoặc một cột dữ liệu, chỉ cần gọi hàm sắp xếp và chuyển tiếp chuỗi của bạn.
Mặt khác, trật tự chức năng là cần thiết để sắp xếp dữ liệu hai dữ liệu chiều -. Tức là, nhiều cột dữ liệu thu thập được trong một ma trận hoặc dataframe.
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à trích đoạn dữ liệu cho các nỗ lực mục tiêu của trường trong mùa NFL 2008, một khung dữ liệu 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 của trường đã cố gắng trong năm 2008; hơn nữa giả sử bạn muốn biết khoảng cách của mục tiêu trường dài nhất đã cố gắng năm đó, ai đã đá nó, và liệu nó có tốt hay không; bạn cũng muốn biết lần thứ hai dài nhất, cũng như dài thứ hai, vv; và cuối cùng bạn muốn nỗ lực mục tiêu ngắn nhất của trường.
Vâng, 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
Đó là đúng, nhưng không phải là rất hữu ích - nó nói với chúng tôi khoảng cách của nỗ lực mục tiêu trường dài nhất, dài nhất thứ hai, ... cũng như ngắn nhất; tuy nhiên, đó là tất cả những gì chúng ta biết - ví dụ, chúng ta không biết ai là kicker, cho dù nỗ lực thành công, vv Tất nhiên, chúng ta cần toàn bộ khung dữ liệu được sắp xếp trên cột "Dist" (đặt một cách khác, chúng ta muốn sắp xếp tất cả các hàng dữ liệu về các thuộc tính đơn Quận rằng sẽ trông như thế này:.
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ì trật tự không đó là 'sắp xếp' cho dữ liệu hai chiều. , đặt một cách khác, nó trả về chỉ số nguyên 1D bao gồm các số hàng sao cho sắp xếp các hàng theo vectơ đó, sẽ cung cấp cho bạn sắp xếp hàng đúng theo định hướng trên cột, D ist
Đây là cách 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ộ dataframe trên cột Quận, chúng tôi sử dụng 'trật tự' chính xác theo cùng một cách như 'sắp xếp' được sử dụng trên:
ndx = order(fg$Dist, decreasing=T)
(i thường gắn mảng trở về từ 'trật tự' vào biến . 'ndx', viết tắt cho 'index', bởi vì tôi đang đi để sử dụng nó như một mảng chỉ số để sắp xếp)
đó là bước 1, đây là bước 2:
'ndx', những gì là được trả về bằng 'sắp xếp' sau đó được sử dụng làm mảng chỉ mục để sắp xếp lại khung dữ liệu, 'f g ':
fg_sorted = fg[ndx,]
fg_sorted là khung dữ liệu được sắp xếp lại ngay lập tức ở trên.
Tóm lại, 'sắp xếp' được sử dụng để tạo 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 làm mảng chỉ mục để sắp xếp lại dataframe (hoặc ma trận).
Ahh .. Tôi thấy bây giờ. order() trả về các chỉ số của vector theo thứ tự sắp xếp. Tuyệt vời, cảm ơn rất nhiều. – jeffshantz
'thứ tự (a, giảm = T)' và 'xếp hạng (a)' sẽ trả về một câu trả lời tương đương. – omar
Tôi đang gặp sự cố với đơn đặt hàng. 'a <-c (4,2,1,80,13)' Sau đó, 'thứ tự (a) 'phải là' 3 4 5 1 2', nhưng kỳ lạ tôi nhận được '3 2 1 5 4' –