Como organizar linhas em uma ordem personalizada usando dplyr


Você pode usar a seguinte sintaxe básica para organizar as linhas de um quadro de dados em uma ordem personalizada usando o pacote dplyr em R:

 library (dplyr)

#arrange rows in custom order based on values in 'team' column
df %>%
  arrange(match(team, c(' C ', ' B ', ' D ', ' A ')), points)

Este exemplo específico organiza as linhas com base na ordem personalizada C, B, D, A para os valores da coluna da equipe e, em seguida, de acordo com os valores da coluna de pontos em ordem crescente.

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: como organizar linhas em uma ordem personalizada usando dplyr

Suponha que temos o seguinte quadro de dados que mostra os pontos marcados por jogadores de basquete de diferentes times:

 #create data frame
df <- data. frame (team=c('A', 'B', 'A', 'A', 'B', 'D', 'C', 'D', 'D', 'C'),
                 points=c(12, 20, 14, 34, 29, 22, 28, 15, 20, 13))

#view data frame
df

   team points
1 to 12
2 B 20
3 to 14
4 to 34
5 B 29
6 D 22
7 C 28
8 D 15
9 D 20
10 C 13

Se usarmos a função organizar() para classificar as linhas com base nos valores da coluna da equipe , então, com base nos valores da coluna de pontos , a função organizar() classificará as linhas com base na ordem alfabética padrão :

 library (dplyr)

#arrange rows in ascending order by team, then by points
df %>%
  arrange(team, points)

   team points
1 to 12
2 to 14
3 to 34
4 B 20
5 B 29
6 C 13
7 C 28
8 D 15
9 D 20
10 D 22

As linhas são listadas em ordem alfabética por equipe e depois em ordem crescente por pontos .

No entanto, digamos que queremos organizar as linhas com base na seguinte ordem de valores de equipe : C, B, D, A.

Podemos usar a função match() dentro da função organizar() para fazer isso:

 library (dplyr)

#arrange rows in custom order based on 'team' column, then by 'points' column
df %>%
  arrange(match(team, c(' C ', ' B ', ' D ', ' A ')), points)

   team points
1 C 13
2 C 28
3 B 20
4 B 29
5 D 15
6 D 20
7 D 22
8 to 12
9 to 14
10 to 34

As linhas são organizadas na ordem personalizada que especificamos (C, B, D, A) para a coluna da equipe e depois pela coluna de pontos .

Nota nº 1 : a função match obtém o índice de linha dos valores na coluna da equipe e, em seguida, a função de organização é capaz de classificar com base nesses valores de índice.

Nota #2 : Para organizar diminuindo os valores dos pontos, simplesmente use desc(points) em vez disso.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em R:

Como organizar linhas por grupo usando dplyr
Como filtrar valores únicos usando dplyr
Como filtrar por múltiplas condições usando dplyr

Add a Comment

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