Rijen in een aangepaste volgorde rangschikken met dplyr
U kunt de volgende basissyntaxis gebruiken om de rijen van een dataframe in een aangepaste volgorde te rangschikken met behulp van het dplyr- pakket in R:
library (dplyr) #arrange rows in custom order based on values in 'team' column df %>% arrange(match(team, c(' C ', ' B ', ' D ', ' A ')), points)
In dit specifieke voorbeeld worden de rijen gerangschikt op basis van de aangepaste volgorde C, B, D, A voor de teamkolomwaarden , en vervolgens volgens de puntenkolomwaarden in oplopende volgorde.
Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Voorbeeld: rijen in een aangepaste volgorde rangschikken met dplyr
Stel dat we het volgende gegevensframe hebben dat de punten weergeeft die zijn gescoord door basketbalspelers van verschillende teams:
#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
Als we de functie arrange() gebruiken om de rijen te sorteren op basis van de waarden in de teamkolom , dan zal de functie arrange() de rijen sorteren op basis van de waarden in de puntenkolom , op basis van de standaard alfabetische volgorde :
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
De lijnen worden alfabetisch gerangschikt per team en vervolgens in oplopende volgorde van punten .
Laten we echter zeggen dat we de lijnen willen rangschikken op basis van de volgende volgorde van teamwaarden : C, B, D, A.
We kunnen hiervoor de functie match() binnen de functie arrange() gebruiken:
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
De rijen zijn gerangschikt in de aangepaste volgorde die we hebben opgegeven (C, B, D, A) voor de teamkolom , en vervolgens op puntenkolom .
Opmerking #1 : De matchfunctie krijgt de rijindex van de waarden in de teamkolom, waarna de rangschikkingsfunctie kan sorteren op basis van deze indexwaarden.
Opmerking #2 : Om te rangschikken door puntwaarden te verlagen, gebruikt u eenvoudigweg desc(punten) .
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in R kunt uitvoeren:
Rijen per groep ordenen met dplyr
Hoe unieke waarden te filteren met dplyr
Hoe u op meerdere voorwaarden kunt filteren met behulp van dplyr