Як включити na в оператор ifelse в r


Часто ви можете використовувати оператор ifelse в R, щоб створити новий стовпець у кадрі даних, значення якого базуються на значеннях існуючого стовпця.

Для цього ви можете використовувати такий базовий синтаксис:

 df$new_column<- ifelse(df$col1 == ' A ', ' val_if_true ', ' val_if_false ')

Однак якщо значення NA присутні в стовпці, то значення в новому стовпці автоматично будуть NA.

Щоб уникнути цього, ви можете використовувати функцію !is.na() наступним чином:

 df$new_column<- ifelse(df$col1 == ' A ' & !is. na (df$col1) , ' val_if_true ', ' val_if_false ')

У наступному прикладі показано, як використовувати цей синтаксис на практиці.

Приклад: включити NA в оператор ifelse в R

Припустимо, у R є наступний кадр даних, який містить інформацію про різних баскетболістів:

 #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

Тепер припустімо, що ми спробуємо створити новий стовпець під назвою клас , який приймає наступні значення:

  • “West_Player”, якщо conf дорівнює “West”
  • “Інше”, якщо conf не дорівнює “Захід”

Наступний код показує, як це зробити:

 #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

Зверніть увагу, що значення класу в рядку 2 дорівнює NA, оскільки відповідне значення в стовпці conf дорівнює NA.

Щоб уникнути цього, ми можемо використовувати функцію !is.na() наступним чином:

 #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

Зауважте, що значення Class у рядку 2 тепер дорівнює “Other” замість NA.

Використовуючи функцію !is.na() , ми вказали, що значення в стовпці conf має дорівнювати «West» , а не дорівнювати NA, щоб значення в стовпці нового класу було «West_Player».

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання в R:

Як написати вкладений оператор If Else у R
Як написати заяву про справу на R
Як додати кілька стовпців до кадру даних у R

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *