Aby posortować wektor 1D lub pojedynczą kolumnę danych, po prostu wywołaj funkcję sortowania i przekaż sekwencję.
Z drugiej strony, kolejność funkcji jest konieczne, aby posortować dane dwa wymiarową danych - tzn wiele kolumn danych zgromadzonych w matrycy lub 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
Oto fragment danych dotyczących prób rzutów z gry w sezonie NFL 2008, ramka danych, którą nazwałem „fg”. przypuśćmy, że te 10 punktów danych reprezentuje wszystkie rzuty z gry, które miały miejsce w 2008 roku; ponadto przypuśćmy, że chcesz poznać odległość najdłuższego rzutu do kosza w tym roku, kto go wykopał i czy był dobry, czy nie; chcesz również poznać drugi najdłuższy, trzeci najdłuższy itp .; i na koniec chcesz jak najkrótszej próby rzutu na bramkę.
Cóż, możesz po prostu zrobić to:
sort(fg$Dist, decreasing=T)
co zwraca: 50 48 43 37 34 32 26 25 25 20
To prawda, ale niezbyt przydatne - informuje nas o odległości najdłuższej próby rzutu z gry, drugiej najdłuższej, ... a także najkrótszej; Jednak to wszystko, co wiemy - np. nie wiemy, kto był kickerem, czy próba się powiodła itp. Oczywiście potrzebujemy całej ramki danych posortowanej w kolumnie „Dist” (inaczej mówiąc, musimy chcesz posortować wszystkie wiersze danych według pojedynczego atrybutu Dist ., który wyglądałby tak:
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
To właśnie robi porządek . Jest to „sortowanie” dla danych dwuwymiarowych; innymi słowy, zwraca indeks liczby całkowitej 1D składający się z numerów wierszy, tak że sortowanie wierszy według tego wektora dałoby poprawne sortowanie zorientowane wierszowo na kolumnie, Dist
Oto jak to działa. Powyżej posortowano kolumnę Dist; aby posortować całą ramkę danych w kolumnie Dist, używamy 'order' dokładnie tak samo jak 'sort' powyżej :
ndx = order(fg$Dist, decreasing=T)
(Zwykle wiążę tablicę zwróconą z `` kolejności '' ze zmienną `` ndx '', która oznacza `` indeks '', ponieważ zamierzam użyć jej jako tablicy indeksów do sortowania).
to był krok 1, oto krok 2:
'ndx', to, co jest zwracane przez 'sort', jest następnie używane jako tablica indeksów do zmiany kolejności ramki danych, 'fg':
fg_sorted = fg[ndx,]
fg_sorted to ponownie uporządkowana ramka danych bezpośrednio powyżej.
Podsumowując, „sort” służy do tworzenia tablicy indeksów (która określa porządek sortowania kolumny, którą chcesz posortować), która następnie jest używana jako tablica indeksów do zmiany kolejności ramki danych (lub macierzy).