Dplyr: jak używać mutate() z wieloma warunkami


Możesz użyć następującej podstawowej składni w dplyr , aby użyć funkcji mutate() do utworzenia nowej kolumny na podstawie wielu warunków:

 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 '))

Ta konkretna składnia tworzy nową kolumnę o nazwie class , która przyjmuje następujące wartości:

  • A_Dobrze , jeśli drużyna jest równa A i liczba punktów jest większa lub równa 20.
  • A_Źle , jeśli drużyna jest równa A, a liczba punktów jest mniejsza niż 20.
  • B_Dobry, jeśli drużyna jest równa B, a liczba punktów jest większa lub równa 20.
  • B_Bad, jeśli żaden z powyższych warunków nie jest spełniony.

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Powiązane: Jak używać case_when() w dplyr

Przykład: użyj mutate() w dplyr z wieloma warunkami

Załóżmy, że mamy następującą ramkę danych w R, która zawiera informacje o różnych koszykarzach:

 #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

Możemy zastosować następującą składnię z funkcją mutate() , aby utworzyć nową kolumnę o nazwie class , której wartości bazują na wartościach w kolumnach zespół i punkty :

 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

  Nowa kolumna klasy przyjmuje wartości na podstawie wartości w kolumnach drużyna i punkty .

Na przykład pierwszy wiersz miał wartość A w kolumnie zespół i wartość punktów większą lub równą 20, więc otrzymał wartość A_Good w kolumnie nowej klasy .

Zwróć uwagę, że w tym przykładzie użyliśmy symbolu & jako operatora „AND”, aby sprawdzić, czy oba warunki są spełnione przed przypisaniem wartości w kolumnie klasy .

Moglibyśmy jednak użyć | symbol jako operator „OR”, aby zamiast tego sprawdzić, czy któryś z dwóch warunków został spełniony przed przypisaniem wartości w kolumnie klasy .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w dplyr:

dplyr: Jak mutować zmienną, jeśli kolumna zawiera ciąg znaków
dplyr: Jak zmienić poziomy współczynników za pomocą mutate()
dplyr: Jak używać funkcjicross().

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *