SE проблема с условной мутацией

Я пытаюсь сделать простой условный с мутацией.

Код должен создать новую переменную под названием "пол", основанную на двух переменных из одного и того же кадра данных.

sample <- data.frame(
   client = c("john", "peter", "hanna", "lisa"), 
   id = c(100, 400,  650, 700),
   resident = c('YES', 'YES', 'YES', 'NO'))

 male_index <- as.vector(000:499)
 female_index <- as.vector(500:999)

 sample <- sample %>%
   mutate(gender = ifelse(resident == "YES" & id %in% male_index, "Male", 
   mutate(gender = ifelse(resident == "YES" & id %in% female_index, "Female", "Female"))))

Я получаю следующую ошибку, которую я не понимаю. Я думаю, это как-то связано с SE. Но я все еще не очень знаком с Р.

Ошибка в mutate_impl(.data, точки):
Аргумент ".data" отсутствует, по умолчанию нет

У меня не возникает проблем, если я запускаю код с помощью одного оператора mutate.

1 ответ

Решение

Вам не нужно второе mutate позвоните в ваш ifelse,

sample <- data.frame(
  client = c("john", "peter", "hanna", "lisa"),
  id = c(100, 400,  650, 700),
  resident = c('YES', 'YES', 'YES', 'NO')
)

male_index <- as.vector(000:499)
female_index <- as.vector(500:999)

sample <- sample %>%
  mutate(gender = ifelse(
    resident == "YES" & id %in% male_index,
    "Male",
    ifelse(resident == "YES" &
             id %in% female_index, "Female", "Non-resident")
  ))

Теперь каждому человеку в наборе данных присвоено значение для gender,

sample
#  client  id resident gender
#1   john 100      YES   Male
#2  peter 400      YES   Male
#3  hanna 650      YES Female
#4   lisa 700       NO Non-resident
Другие вопросы по тегам