Variabelen sorteren op groep met dplyr
U kunt de volgende basissyntaxis gebruiken om variabelen in dplyr te groeperen:
df %>% arrange (group_var, numeric_var) %>% group_by (group_var) %>% mutate (rank = rank(numeric_var))
De volgende voorbeelden laten zien hoe u deze syntaxis in de praktijk kunt gebruiken met het volgende dataframe:
#create data frame df <- data. frame (team = c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'), points = c(12, 28, 19, 22, 32, 45, 22, 28, 13, 19), rebounds = c(5, 7, 7, 12, 11, 4, 10, 7, 8, 8)) #view data frame df team points rebounds 1 to 12 5 2 to 28 7 3 to 19 7 4 A 22 12 5 B 32 11 6 B 45 4 7 B 22 10 8 C 28 7 9 C 13 8 10 C 19 8
Voorbeeld 1: Rangschikking in oplopende volgorde
De volgende code laat zien hoe je de door spelers gescoorde punten in oplopende volgorde kunt sorteren, gegroepeerd op team:
library (dplyr) #rank points scored, grouped by team df %>% arrange (team, points) %>% group_by (team) %>% mutate (rank = rank(points)) # A tibble: 10 x 4 # Groups: team [3] team points rebounds rank 1 A 12 5 1 2 A 19 7 2 3 A 22 12 3 4 A 28 7 4 5 B 22 10 1 6 B 32 11 2 7 B 45 4 3 8 C 13 8 1 9 C 19 8 2 10 C 28 7 3
Voorbeeld 2: Rangschikking in aflopende volgorde
We kunnen de gescoorde punten ook in aflopende volgorde per groep classificeren, met behulp van een negatief teken binnen de functie Rank() :
library (dplyr) #rank points scored in reverse, grouped by team df %>% arrange (team, points) %>% group_by (team) %>% mutate (rank = rank(-points)) # A tibble: 10 x 4 # Groups: team [3] team points rebounds rank 1 to 12 5 4 2 A 19 7 3 3 A 22 12 2 4 A 28 7 1 5 B 22 10 3 6 B 32 11 2 7 B 45 4 1 8 C 13 8 3 9 C 19 8 2 10 C 28 7 1
Hoe om te gaan met gelijkheid in rangschikking
We kunnen het argument tie.method gebruiken om te specificeren hoe we met relaties moeten omgaan bij het ordenen van numerieke waarden.
rank(points, ties. method = ' average ')
U kunt een van de volgende opties gebruiken om op te geven hoe met koppelingen moet worden omgegaan:
- gemiddelde : (standaard) Geeft elk gekoppeld item de gemiddelde rangorde (items op de derde en vierde plaats krijgen beide een rangorde van 3,5)
- eerste : wijst het eerste gekoppelde element toe aan de laagste rang (elementen gerangschikt op de 3e en 4e positie krijgen respectievelijk rang 3 en 4)
- min : wijst elk gekoppeld item toe aan de laagste rang (items op de derde en vierde plaats krijgen beide een rangorde van 3)
- max : wijst elk gekoppeld item de hoogste rang toe (items op de derde en vierde plaats krijgen beide een rang van 4)
- willekeurig : wijst aan elk gebonden element een willekeurige rang toe (elk van de elementen die op de 3e en 4e positie staan, kan beide rang krijgen)
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende functies in dplyr kunt uitvoeren:
Hoe u de eerste rij per groep selecteert met dplyr
Hoe relatieve frequenties te berekenen met behulp van dplyr
Hoe waarden te hercoderen met dplyr
Hoe NA te vervangen door Zero in dplyr