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().