Jak uwzględnić na w instrukcji ifels w r
Często możesz chcieć użyć instrukcji ifelse w R, aby utworzyć nową kolumnę w ramce danych, której wartości są oparte na wartościach istniejącej kolumny.
Aby to zrobić, możesz użyć następującej podstawowej składni:
df$new_column<- ifelse(df$col1 == ' A ', ' val_if_true ', ' val_if_false ')
Jeśli jednak w kolumnie znajdują się wartości NA, wówczas wartości w nowej kolumnie automatycznie staną się NA.
Aby tego uniknąć, możesz użyć funkcji !is.na() w następujący sposób:
df$new_column<- ifelse(df$col1 == ' A ' & !is. na (df$col1) , ' val_if_true ', ' val_if_false ')
Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.
Przykład: uwzględnij NA w instrukcji ifels w R
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 (player=c('A', 'B', 'C', 'D', 'E', 'F'), conf=c('West', NA, 'West', 'East', 'East', 'East'), points=c(30, 35, 11, 18, 14, NA)) #view data frame df player conf points 1 A West 30 2 B <NA> 35 3 C West 11 4 D East 18 5 E East 14 6 F East NA
Załóżmy teraz, że próbujemy utworzyć nową kolumnę o nazwie class , która przyjmuje następujące wartości:
- „West_Player”, jeśli conf jest równe „West”
- „Inne”, jeśli conf nie jest równe „Zachód”
Poniższy kod pokazuje, jak to zrobić:
#create new column called 'class' df$class <- ifelse(df$conf == ' West ', ' West_Player ', ' Other ') #view updated data frame df player conf points class 1 A West 30 West_Player 2 B <NA> 35 <NA> 3 C West 11 West_Player 4 D East 18 Other 5 E East 14 Other 6 F East NA Other
Należy zauważyć, że wartość klasy w wierszu 2 jest równa NA, ponieważ odpowiadająca jej wartość w kolumnie conf jest równa NA.
Aby tego uniknąć, możemy użyć funkcji !is.na() w następujący sposób:
#create new column called 'class' df$class <- ifelse(df$conf == ' West ' & !is. na (df$conf), ' West_Player ', ' Other ') #view updated data frame df player conf points class 1 A West 30 West_Player 2 B <NA> 35 Other 3 C West 11 West_Player 4 D East 18 Other 5 E East 14 Other 6 F East NA Other
Zauważ, że wartość Class w linii 2 jest teraz równa „Inne” zamiast NA.
Używając funkcji !is.na() określiliśmy, że wartość w kolumnie conf musi być równa „West” i nie równa NA, aby wartość w kolumnie nowej klasy wynosiła „West_Player”.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w języku R:
Jak napisać zagnieżdżoną instrukcję If Else w R
Jak napisać opis sprawy w języku R
Jak dodać wiele kolumn do ramki danych w R