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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert