Щоб відсортувати одновимірний вектор або окремий стовпець даних, просто викликайте функцію сортування та передайте свою послідовність.
З іншого боку, порядок функції необхідно сортувати дані два мірних даних - тобто, декілька стовпців даних , зібраних в матриці або 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
Ось фрагмент даних для спроб польових воріт у сезоні НФЛ 2008, фрейм даних, який я назвав "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
Це те , що робить порядок . Це "сортування" для двовимірних даних; по-іншому, він повертає одновимірний цілочисельний індекс, що складається з номерів рядків, так що сортування рядків відповідно до цього вектора дасть вам правильне орієнтоване на рядки сортування в стовпці, Dist
Ось як це працює. Вище сортування використовувалось для сортування стовпця Dist; щоб відсортувати весь кадр даних у стовпці Dist, ми використовуємо 'order' точно так само, як і 'sort', що використовується вище :
ndx = order(fg$Dist, decreasing=T)
(я зазвичай прив'язую масив, повернутий із "замовлення", до змінної "ndx", що означає "індекс", оскільки я збираюся використовувати його як масив індексу для сортування.)
це був крок 1, ось крок 2:
'ndx', те, що повертається 'sort', потім використовується як масив індексу для переупорядкування кадру даних, 'fg':
fg_sorted = fg[ndx,]
fg_sorted - це впорядкований фрейм даних безпосередньо вище.
Підсумовуючи, сортування використовується для створення масиву індексу (який визначає порядок сортування стовпця, який потрібно відсортувати), який потім використовується як масив індексу для переупорядкування кадру даних (або матриці).