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

Einen Kommentar hinzufügen

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