O guia completo: como usar sort(), order() e rank() em r


Três funções do R que as pessoas costumam confundir são classificação , ordenação e classificação .

Aqui está a diferença entre essas funções:

  • sort() irá classificar um vetor em ordem crescente
  • order() retornará o índice de cada elemento de um vetor em ordem de classificação
  • Rank() atribuirá uma classificação a cada elemento de um vetor (menor = 1)

O exemplo a seguir mostra como usar cada uma dessas funções na prática.

Exemplo: Use sort(), order() e Rank() com vetores

O código a seguir mostra como usar as funções sort() , order() e Rank() com um vetor de quatro valores:

 #createvector
x <- c(0, 20, 10, 15)

#sort vector
sort(s)

[1] 0 10 15 20

#order vector
order(s)

[1] 1 3 4 2

#rank vector
rank(x)

[1] 1 4 2 3

Aqui está o que cada função fez:

1. A função sort() simplesmente classificou os valores do vetor em ordem crescente.

2. A função order() retornou o índice de cada elemento na ordem de classificação.

  • Se você colocar os valores originais do vetor em ordem com base nesses valores de índice, obterá um vetor classificado.
  • Por exemplo, order() nos diz para primeiro colocar o valor na posição 1 do índice – é 0 no vetor original.
  • Então order() nos diz para colocar o valor na posição 3 do índice – isso é 10 no vetor original.
  • Então order() nos diz para colocar o valor na posição 4 do índice – isso é 15 no vetor original.
  • Então order() nos diz para colocar o valor na posição 2 do índice – isso é 20 no vetor original.
  • O resultado final é um vetor classificado – 0, 10, 15, 20.

3. A função Rank() atribuiu uma classificação a cada elemento do vetor, usando 1 para o menor valor.

  • Por exemplo, Rank() nos diz que o primeiro valor do vetor original é o menor (classificação = 1) e que o segundo valor do vetor original é o maior (classificação = 4).

Observe que podemos usar a seguinte sintaxe para usar sort() , order() e rank() na ordem inversa:

 #createvector
x <- c(0, 20, 10, 15)

#sort vector in decreasing order
sort(x, decreasing= TRUE )

[1] 20 15 10 0

#order vector in decreasing order
order(x, decreasing= TRUE )

[1] 2 4 3 1

#rank vector in reverse order (largest value = 1)
rank(-x)

[1] 4 1 3 2

Observe que esses resultados são exatamente o oposto daqueles produzidos nos exemplos anteriores.

Nota: Como lidar com empates com a função Rank()

Podemos usar o argumento tie.method para especificar como devemos lidar com empates ao usar a função Rank() :

 rank(x, ties. method = ' average ')

Você pode usar uma das seguintes opções para especificar como lidar com links:

  • média : (padrão) atribui a cada item vinculado a classificação média (os itens classificados em 3º e 4º receberiam uma classificação de 3,5)
  • primeiro : Atribui o primeiro elemento vinculado à classificação mais baixa (os elementos classificados na 3ª e 4ª posições receberiam as classificações 3 e 4, respectivamente)
  • min : Atribui cada item vinculado à classificação mais baixa (os itens classificados em 3º e 4º receberiam uma classificação de 3)
  • max : atribui a cada item vinculado a classificação mais alta (os itens classificados em 3º e 4º receberiam uma classificação de 4)
  • random : atribui a cada elemento empatado uma classificação aleatória (qualquer elemento empatado na 3ª e 4ª posição pode receber qualquer uma das classificações)

Dependendo do seu cenário, um desses métodos pode fazer mais sentido usar do que os outros.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns em R:

Como classificar por múltiplas colunas em R
Como classificar um quadro de dados por data em R
Como calcular a classificação percentil em R

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *