Een voorwaardelijk filter gebruiken in dplyr


U kunt de volgende basissyntaxis gebruiken om een voorwaardelijk filter op een dataframe toe te passen met behulp van functies in het dplyr- pakket in R:

 library (dplyr)

#filter data frame where points is greater than some value (based on team)
df %>% 
  filter(case_when(team==' A ' ~ points > 15,
                   team==' B ' ~ points > 20,
                   TRUE ~ points > 30))

Dit specifieke voorbeeld filtert rijen in een dataframe waarbij de waarde van de puntenkolom groter is dan een bepaalde waarde, afhankelijk van de waarde van de teamkolom .

Gerelateerd: Een inleiding tot case_when() in dplyr

Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.

Voorbeeld: hoe u een voorwaardelijk filter gebruikt in dplyr

Stel dat we het volgende dataframe in R hebben dat informatie bevat over verschillende basketbalspelers:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'),
                 points=c(10, 12, 17, 18, 24, 29, 29, 34, 35))

#view data frame
df

  team points
1 to 10
2 to 12
3 to 17
4 B 18
5 B 24
6 B 29
7 C 29
8 C 34
9 C 35

Stel nu dat we het volgende voorwaardelijke filter willen toepassen:

  • Houd alleen lijnen aan voor team A -spelers wiens punten groter zijn dan 15.
  • Houd alleen lijnen aan voor team B -spelers waarvan de punten groter zijn dan 20.
  • Houd alleen lijnen aan voor team C -spelers met meer dan 30 punten.

We kunnen de functies filter() en case_when() uit het dplyr- pakket gebruiken om dit voorwaardelijke filter op het dataframe toe te passen:

 library (dplyr)

#filter data frame where points is greater than some value (based on team)
df %>% 
  filter(case_when(team==' A ' ~ points > 15,
                   team==' B ' ~ points > 20,
                   TRUE ~ points > 30))

  team points
1 to 17
2 B 24
3 B 29
4 C 34
5 C 35

Rijen in het dataframe worden nu gefilterd waarbij de waarde in de puntenkolom groter is dan een bepaalde waarde, afhankelijk van de waarde in de teamkolom .

Opmerking #1 : In de functie case_when() gebruiken we TRUE in het laatste argument om alle waarden in de teamkolom weer te geven die niet gelijk zijn aan „A“ of „B“.

Opmerking #2 : U kunt hier de volledige documentatie voor de functie dplyr case_when() vinden.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende functies in dplyr kunt uitvoeren:

Filteren op rijnummer met dplyr
Hoe u op meerdere voorwaarden kunt filteren met behulp van dplyr
Hoe u een „niet inbegrepen“ filter gebruikt in dplyr

Einen Kommentar hinzufügen

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