Dplyr: so verwenden sie mutate() mit mehreren bedingungen
Sie können die folgende grundlegende Syntax in dplyr verwenden, um mit der Funktion mutate() eine neue Spalte basierend auf mehreren Bedingungen zu erstellen:
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 '))
Diese spezielle Syntax erstellt eine neue Spalte namens „class“ , die die folgenden Werte annimmt:
- A_Gut , wenn das Team gleich A ist und die Punkte größer oder gleich 20 sind.
- A_Schlecht, wenn das Team gleich A ist und die Punkte weniger als 20 betragen.
- B_Gut , wenn das Team gleich B ist und die Punkte größer oder gleich 20 sind.
- B_Bad, wenn keine der vorherigen Bedingungen erfüllt ist.
Das folgende Beispiel zeigt, wie diese Syntax in der Praxis verwendet wird.
Verwandt: So verwenden Sie case_when() in dplyr
Beispiel: Verwenden Sie mutate() in dplyr mit mehreren Bedingungen
Angenommen, wir haben den folgenden Datenrahmen in R, der Informationen über verschiedene Basketballspieler enthält:
#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
Wir können die folgende Syntax mit der Funktion mutate() verwenden, um eine neue Spalte namens „ class“ zu erstellen, deren Werte auf den Werten in den Spalten „ team “ und „points“ basieren:
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
Die neue Klassenspalte übernimmt Werte basierend auf den Werten in den Team- und Punktespalten .
Beispielsweise hatte die erste Zeile in der Spalte „ Team“ den Wert „A“ und einen Punktewert größer oder gleich 20, sodass sie in der Spalte „Neue Klasse“ den Wert „ A_Gut“ erhielt.
Beachten Sie, dass wir in diesem Beispiel das & -Symbol als „AND“-Operator verwendet haben, um zu prüfen, ob zwei Bedingungen beide wahr sind, bevor wir der Klassenspalte einen Wert zuweisen.
Allerdings hätten wir das | verwenden können Symbol als „ODER“-Operator verwenden, um stattdessen zu prüfen, ob eine der beiden Bedingungen erfüllt ist, bevor der Klassenspalte ein Wert zugewiesen wird.
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, wie Sie andere häufige Aufgaben in dplyr ausführen:
dplyr: So mutieren Sie eine Variable, wenn die Spalte eine Zeichenfolge enthält
dplyr: So ändern Sie Faktorstufen mit mutate()
dplyr: So verwenden Sie die across()-Funktion