So verwenden sie case_when() in dplyr


Mit der Funktion case_when() aus dem dplyr- Paket in R können neue Variablen aus vorhandenen Variablen erstellt werden.

Diese Funktion verwendet die folgende grundlegende Syntax:

 library (dplyr)

df %>%
  mutate (new_var = case_when (var1 < 15 ~ ' low ',
                             var2 < 25 ~ ' med ',
                             TRUE ~ ' high '))

Beachten Sie, dass TRUE einer „else“-Anweisung entspricht.

Die folgenden Beispiele zeigen, wie Sie diese Funktion in der Praxis mit dem folgenden Datenrahmen verwenden:

 #create data frame
df <- data. frame (player = c('AJ', 'Bob', 'Chad', 'Dan', 'Eric', 'Frank'),
                 position = c('G', 'F', 'F', 'G', 'C', NA),
                 points = c(12, 15, 19, 22, 32, NA),
                 assists = c(5, 7, 7, 12, 11, NA))

#view data frame
df

  player position points assists
1 AJ G 12 5
2 Bob F 15 7
3 Chad F 19 7
4 Dan G 22 12
5 Eric C 32 11
6 Frank NA NA NA

Beispiel 1: Erstellen Sie eine neue Variable aus einer vorhandenen Variablen

Der folgende Code zeigt, wie eine neue Variable namens „Qualität“ erstellt wird, deren Werte aus der Punktespalte abgeleitet werden:

 df %>%
mutate (quality = case_when (points > 20 ~ ' high ',
                             points > 15 ~ ' med ',
                             TRUE ~ ' low ' ))

  player position points assists quality
1 AJ G 12 5 low
2 Bob F 15 7 low
3 Chad F 19 7 med
4 Dan G 22 12 high
5 Eric C 32 11 high
6 Frank NA NA NA low

So hat die Funktion case_when() genau die Werte für die neue Spalte erstellt:

  • Wenn der Wert in der Punktespalte größer als 20 ist, ist der Wert in der Qualitätsspalte „hoch“.
  • Andernfalls, wenn der Wert in der Punktespalte größer als 15 ist, ist der Wert in der Qualitätsspalte „mittel“.
  • Andernfalls, wenn der Wert in der Punktespalte kleiner oder gleich 15 ist (oder ein fehlender Wert wie NA), dann ist der Wert in der Qualitätsspalte „niedrig“.

Beispiel 2: Erstellen Sie eine neue Variable aus mehreren Variablen

Der folgende Code zeigt, wie eine neue Variable namens „Quality“ erstellt wird, deren Werte aus den Punkten und den Hilfsspalten abgeleitet werden:

 df %>%
mutate (quality = case_when (points > 15 & assists > 10 ~ ' great ',
                             points > 15 & assists > 5 ~ ' good ',
                             TRUE ~ ' average ' ))

  player position points assists quality
1 AJ G 12 5 average
2 Bob F 15 7 average
3 Chad F 19 7 good
4 Dan G 22 12 great
5 Eric C 32 11 great
6 Frank NA NA NA average

Beachten Sie, dass wir die Funktion is.na() auch verwenden können, um NA-Werten explizit Zeichenfolgen zuzuweisen:

 df %>%
mutate (quality = case_when (is. na (points) ~ ' missing ',
                             points > 15 & assists > 10 ~ ' great ',
                             points > 15 & assists > 5 ~ ' good ',
                             TRUE ~ ' average ' ))

  player position points assists quality
1 AJ G 12 5 average
2 Bob F 15 7 average
3 Chad F 19 7 good
4 Dan G 22 12 great
5 Eric C 32 11 great
6 Frank NA NA NA missing

Zusätzliche Ressourcen

So ordnen Sie Zeilen in R an
So zählen Sie Beobachtungen pro Gruppe in R
So filtern Sie Zeilen, die eine bestimmte Zeichenfolge in R enthalten

Einen Kommentar hinzufügen

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