Como classificar por múltiplas colunas em r (com exemplos)


Você pode usar qualquer um dos seguintes métodos para classificar um quadro de dados em várias colunas em R:

Método 1: Use Base R

 df[order(-df$column1, df$column2), ]

Método 2: use dplyr

 library (dplyr)

df %>%
  arrange( desc (column1), column2)

Os exemplos a seguir mostram como usar cada método na prática com o seguinte quadro de dados:

 #create data frame
df <- data. frame (team=c('A', 'B', 'C', 'D', 'E', 'F', 'G'),
                 points=c(90, 90, 93, 91, 91, 99, 85),
                 assists=c(33, 28, 31, 39, 34, 40, 44))

#view data frame
df

  team points assists
1 A 90 33
2 B 90 28
3 C 93 31
4 D 91 39
5 E 91 34
6 F 99 40
7 G 85 44

Método 1: Use Base R

O código a seguir mostra como classificar o bloco de dados baseado em R por pontos decrescentes (do maior para o menor) e, em seguida, por assistências ascendentes:

 #sort by points descending, then by assists ascending
df[order(-df$points, df$assists), ]

  team points assists
6 F 99 40
3 C 93 31
5 E 91 34
4 D 91 39
2 B 90 28
1 A 90 33
7 G 85 44

Observe que as linhas no quadro de dados são ordenadas por pontos, do maior para o menor, e depois por assistências, do menor para o maior.

Método 2: use dplyr

O código a seguir mostra como usar funções no pacote dplyr para classificar o quadro de dados por pontos decrescentes (do maior para o menor) e, em seguida, por assistência ascendente:

 library (dplyr)

df %>%
  arrange( desc (dots), assists)

  team points assists
1 F 99 40
2 C 93 31
3 E 91 34
4 D 91 39
5 B 90 28
6 A 90 33
7 G 85 44

Novamente, as linhas no quadro de dados são ordenadas por pontos, do maior para o menor, e depois por assistências, do menor para o maior.

Nota : Você pode encontrar a documentação completa da função organizar() aqui .

Recursos adicionais

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

Como ordenar valores em ordem alfabética em R
Como classificar um quadro de dados por data em R

Add a Comment

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