Dplyr: mutate() gebruiken met meerdere voorwaarden


U kunt de volgende basissyntaxis in dplyr gebruiken om de functie mute() te gebruiken om een nieuwe kolom te maken op basis van meerdere voorwaarden:

 library (dplyr)

df <- df%>% mutate(class = case_when((team == ' A ' & points >= 20) ~ ' A_Good ',
                                     (team == ' A ' & points < 20) ~ ' A_Bad ',
                                     (team == ' B ' & points >= 20) ~ ' B_Good ',
                                      TRUE ~ ' B_Bad '))

Deze specifieke syntaxis creëert een nieuwe kolom met de naam class , die de volgende waarden aanneemt:

  • A_Goed als het team gelijk is aan A en de punten groter dan of gelijk zijn aan 20.
  • A_Bad als het team gelijk is aan A en de punten minder dan 20 zijn.
  • B_Goed als het team gelijk is aan B en de punten groter dan of gelijk aan 20 zijn.
  • B_Slecht als aan geen van de voorgaande voorwaarden is voldaan.

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

Gerelateerd: Case_when() gebruiken in dplyr

Voorbeeld: Gebruik mute() in dplyr met meerdere voorwaarden

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', 'A', 'A', 'B', 'B', 'B', 'B', 'B'),
                 points=c(22, 30, 34, 19, 14, 12, 39, 15, 22, 25))

#view data frame
df

   team points
1 to 22
2 to 30
3 to 34
4 to 19
5 to 14
6 B 12
7 B 39
8 B 15
9 B 22
10 B 25

We kunnen de volgende syntaxis gebruiken met de functie mute() om een nieuwe kolom te maken met de naam class , waarvan de waarden zijn gebaseerd op de waarden in de team- en puntenkolommen :

 library (dplyr)
#add new column based on values in team and points columns
df <- df%>% mutate(class = case_when((team == ' A ' & points >= 20) ~ ' A_Good ',
                                     (team == ' A ' & points < 20) ~ ' A_Bad ',
                                     (team == ' B ' & points >= 20) ~ ' B_Good ',
                                      TRUE ~ ' B_Bad '))

#view updated data frame
df

   team points class
1 A 22 A_Good
2 A 30 A_Good
3 A 34 A_Good
4 A 19 A_Bad
5 A 14 A_Bad
6 B 12 B_Bad
7 B 39 B_Good
8 B 15 B_Bad
9 B 22 B_Good
10 B 25 B_Good

  De nieuwe klassekolom neemt waarden aan op basis van de waarden in de team- en puntenkolommen .

De eerste rij had bijvoorbeeld de waarde A in de teamkolom en een puntenwaarde groter dan of gelijk aan 20, dus kreeg deze de waarde A_Good in de nieuwe klassekolom .

Houd er rekening mee dat we in dit voorbeeld het & -symbool als EN-operator hebben gebruikt om te controleren of twee voorwaarden beide waar zijn voordat we een waarde in de klassenkolom toekennen.

We hadden echter ook de | symbool als een „OR“-operator om in plaats daarvan te controleren of aan een van de twee voorwaarden is voldaan voordat een waarde in de klassenkolom wordt toegewezen.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in dplyr uitvoert:

dplyr: Hoe een variabele te muteren als de kolom een string bevat
dplyr: Hoe factorniveaus te veranderen met mute()
dplyr: Hoe de across() functie te gebruiken

Einen Kommentar hinzufügen

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