dplyr - использовать case_when с несколькими критериями - PullRequest
1 голос
/ 18 апреля 2020

У меня есть кадр данных с именем data, который содержит столбец с именем Sex. В ходе проведенного опроса этот вопрос предлагал два исходных варианта: «Мужской» и «Женский» и вариант «Другое», который был открытым, и люди могли писать все, что хотели.

Ради Простота, я пытаюсь перекодировать все остальные варианты в NA и оставить только мужчины и женщины. Это была моя попытка:

data %>%
   mutate(Sex = case_when((Sex != "Male" & Sex != "Female") ~ NA))

Однако это привело к появлению столбца со всеми NA. Я также попробовал следующее, хотя думаю, что это бессмысленно:

data %>%
   mutate(Sex = case_when((Sex != "Male" | Sex != "Female") ~ NA))

И результат был тот же. Как правильно добиться этого?

К сожалению, я не могу опубликовать данные, потому что они конфиденциальны.

1 Ответ

1 голос
/ 18 апреля 2020

Мы можем указать TRUE то есть условие по умолчанию для возврата самого столбца, так как по умолчанию он возвращает NA

library(dplyr)
data %>%
   mutate(Sex = case_when(Sex != "Male" & Sex != "Female"
               ~ NA_character_, 
         TRUE ~ Sex))

Или это также может быть записано с %in%

data %>%
    mutate(Sex = case_when(!Sex %in% c("Male", "Female") 
            ~ NA_character_, TRUE ~ Sex))

Или вместо case_when. используйте replace

data %>%
   mutate(Sex = replace(Sex, Sex != "Male" & Sex != "Female", NA_character_))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...