Hoe u de eerste rij per groep selecteert met dplyr
Vaak wilt u misschien de eerste rij van elke groep selecteren met behulp van het dplyr- pakket in R. U kunt hiervoor de volgende basissyntaxis gebruiken:
df %>% group_by (group_var) %>% arrange (values_var) %>% filter (row_number()== 1 )
Het volgende voorbeeld laat zien hoe u deze functie in de praktijk kunt gebruiken.
Voorbeeld: selecteer de eerste rij per groep in R
Stel dat we de volgende dataset in R hebben:
#create dataset df <- data.frame(team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'C' ), points=c(4, 9, 7, 7, 6, 13, 8, 8, 4, 17)) #view dataset df team points 1 to 4 2 to 9 3 to 7 4 B 7 5 B 6 6 B 13 7 C 8 8 C 8 9 C 4 10 C 17
De volgende code laat zien hoe u het dplyr-pakket gebruikt om de eerste rij per groep in R te selecteren:
library (dplyr) df %>% group_by (team) %>% arrange (points) %>% filter (row_number()== 1 ) # A tibble: 3 x 2 # Groups: team [3] team points 1 to 4 2 C 4 3 B 6
Standaard sorteert arrange() waarden in oplopende volgorde, maar we kunnen waarden eenvoudig in aflopende volgorde sorteren:
df %>% group_by (team) %>% arrange ( desc (dots)) %>% filter (row_number()== 1 ) # A tibble: 3 x 2 # Groups: team [3] team points 1 C 17 2 B 13 3 to 9
Merk op dat u deze code eenvoudig kunt wijzigen om de zoveelste rij in elke groep te selecteren. Verander gewoon row_number() == n .
Als u bijvoorbeeld de 2e rij per groep wilt selecteren, kunt u de volgende syntaxis gebruiken:
df %>% group_by (team) %>% arrange ( desc (dots)) %>% filter (row_number()== 2 )
Of u kunt de volgende syntaxis gebruiken om de laatste rij per groep te selecteren:
df %>% group_by (team) %>% arrange ( desc (dots)) %>% filter (row_number()== n() )
Aanvullende bronnen
Hoe lijnen in R te rangschikken
Hoe observaties per groep te tellen in R
Hoe de maximale waarde per groep in R te vinden