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