Para ordenar un vector 1D o una sola columna de datos, simplemente llame a la función de ordenación y pase su secuencia.
Por otra parte, la orden función es necesaria para ordenar los datos dos datos dimensionales - es decir, múltiples columnas de datos recogidos en una matriz o trama de datos.
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
Aquí hay un extracto de datos para intentos de gol de campo en la temporada 2008 de la NFL, un marco de datos que he llamado 'fg'. suponga que estos 10 puntos de datos representan todos los goles de campo intentados en 2008; además, suponga que desea saber la distancia del gol de campo más largo que se intentó ese año, quién lo pateó y si fue bueno o no; también desea conocer el segundo más largo, así como el tercero más largo, etc .; y finalmente quieres el intento de gol de campo más corto.
Bueno, podrías hacer esto:
sort(fg$Dist, decreasing=T)
que devuelve: 50 48 43 37 34 32 26 25 25 20
Eso es correcto, pero no muy útil - nos dice la distancia del intento de gol de campo más largo, el segundo más largo, ... así como el más corto; sin embargo, pero eso es todo lo que sabemos, por ejemplo, no sabemos quién fue el pateador, si el intento fue exitoso, etc. Por supuesto, necesitamos todo el marco de datos ordenado en la columna "Dist" (dicho de otra manera, desea ordenar todas las filas de datos en el atributo único Dist . que se vería así:
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
Eso es lo que hace el orden . Es 'ordenado' para datos bidimensionales; dicho de otra manera, devuelve un índice entero 1D compuesto por los números de fila de modo que ordenar las filas de acuerdo con ese vector le daría una clasificación correcta orientada a filas en la columna, Dist
Así es como funciona. Por encima, una especie se utiliza para ordenar la columna Dist; para ordenar todo el marco de datos en la columna Dist, usamos 'order' exactamente de la misma manera que 'sort' se usa arriba :
ndx = order(fg$Dist, decreasing=T)
(Por lo general, asocio la matriz devuelta de 'orden' a la variable 'ndx', que significa 'índice', porque la usaré como una matriz de índice para ordenar).
ese fue el paso 1, aquí está el paso 2:
'ndx', lo que devuelve 'sort' se usa como una matriz de índice para reordenar el marco de datos, 'fg':
fg_sorted = fg[ndx,]
fg_sorted es el marco de datos reordenado inmediatamente arriba.
En resumen, 'ordenar' se usa para crear una matriz de índice (que especifica el orden de clasificación de la columna que desea ordenar), que luego se usa como una matriz de índice para reordenar el marco de datos (o matriz).