Para classificar um vetor 1D ou uma única coluna de dados, basta chamar a função de classificação e passar sua sequência.
Por outro lado, a fim função é necessária para classificar os dados de dois dados dimensionais - isto é, várias colunas de dados recolhidos em uma matriz ou trama de dados.
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
Aqui está um trecho de dados para tentativas de field goal na temporada de 2008 da NFL, um dataframe que chamei de 'fg'. suponha que esses 10 pontos de dados representem todos os gols tentados em 2008; além disso, suponha que você queira saber a distância do field goal mais longo tentado naquele ano, quem chutou e se foi bom ou não; você também deseja saber o segundo mais longo, bem como o terceiro mais longo, etc .; e, finalmente, você deseja a menor tentativa de gol de campo.
Bem, você poderia apenas fazer isso:
sort(fg$Dist, decreasing=T)
que retorna: 50 48 43 37 34 32 26 25 25 20
Isso está correto, mas não é muito útil - ele nos diz a distância da tentativa de field goal mais longa, a segunda mais longa, ... bem como a mais curta; no entanto, mas isso é tudo que sabemos - por exemplo, não sabemos quem foi o chutador, se a tentativa foi bem-sucedida, etc. Claro, precisamos de todo o dataframe classificado na coluna "Dist" (dito de outra forma, nós deseja classificar todas as linhas de dados no único atributo Dist . que ficariam assim:
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
Isso é o que a ordem faz. É 'classificar' para dados bidimensionais; dito de outra forma, ele retorna um índice inteiro 1D composto de números de linha, de modo que classificar as linhas de acordo com aquele vetor, daria a você uma classificação orientada por linha correta na coluna, Dist
É assim que funciona. Acima, classificar foi usado para classificar a coluna Dist; para classificar todo o dataframe na coluna Dist, usamos 'ordenar' exatamente da mesma forma que 'classificar' é usado acima :
ndx = order(fg$Dist, decreasing=T)
(eu geralmente vinculo a matriz retornada de 'ordem' à variável 'ndx', que significa 'índice', porque vou usá-la como uma matriz de índice para classificar.)
essa foi a etapa 1, aqui está a etapa 2:
'ndx', o que é retornado por 'sort' é então usado como uma matriz de índice para reordenar o dataframe, 'fg':
fg_sorted = fg[ndx,]
fg_sorted é o dataframe reordenado imediatamente acima.
Em suma, 'sort' é usado para criar um array de índice (que especifica a ordem de classificação da coluna que você deseja classificar), que então é usado como um array de índice para reordenar o dataframe (ou matriz).