Чтобы отсортировать одномерный вектор или отдельный столбец данных, просто вызовите функцию сортировки и передайте свою последовательность.
С другой стороны, порядок функции необходимо сортировать данные два мерных данных - то есть, несколько столбцов данных , собранных в матрице или 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
Вот что делает заказ . Это «сортировка» двумерных данных; Другими словами, он возвращает 1D целочисленный индекс, состоящий из номеров строк, так что сортировка строк в соответствии с этим вектором даст вам правильную ориентированную на строки сортировку по столбцу, Dist
Вот как это работает. Выше, вроде был использован для сортировки Dist колонки; чтобы отсортировать весь фрейм данных в столбце Dist, мы используем «порядок» точно так же, как «сортировка» используется выше :
ndx = order(fg$Dist, decreasing=T)
(Обычно я привязываю массив, возвращаемый из 'order', к переменной 'ndx', что означает 'index', потому что я собираюсь использовать его как массив индексов для сортировки.)
это был шаг 1, вот шаг 2:
'ndx', то, что возвращает 'sort', затем используется в качестве массива индексов для изменения порядка фрейма данных 'fg':
fg_sorted = fg[ndx,]
fg_sorted - это переупорядоченный фрейм данных непосредственно выше.
Таким образом, «сортировка» используется для создания индексного массива (который определяет порядок сортировки столбца, который вы хотите отсортировать), который затем используется как индексный массив для изменения порядка фрейма данных (или матрицы).