команда ifelse в R не заполняет столбец во фрейме данных?

#r

#r

Вопрос:

Я был бы признателен за любую помощь с этой ошибкой, которую я получаю в своем коде для исследовательского проекта, над которым я работаю в R:

Я пытаюсь создать столбец (с именем non_political) во фрейме данных (с именем privacy, импортированный из файла sav), представляющий данные опроса, где:

  • 1 означает, что респондент был неполитическим (ответил неполитическим образом на некоторые вопросы) и
  • 0 означает обратное.

До сих пор я писал:

 privacy$non_political<-NA

privacy$non_political<-ifelse(((privacy$q19 == 3) | (privacy$q19 == 4) | (privacy$q20 == 2) | (privacy$q21==2)), 1, 0)
 

но

 head(privacy$non_political)
 

возвращает NA вместе с 1, что означает, что параметр 0 никогда не выполняется в команде ifelse.

Что я могу здесь делать не так?

Спасибо!

Комментарии:

1. Если какие-либо из q19, q20 и q21 имеют пропущенные значения, результат будет отсутствовать (NA).

2. Пытаюсь исправить это прямо сейчас и сообщу, если это сработает. Спасибо.

Ответ №1:

Использование == будет генерировать NA ‘s в качестве выходных данных, если у вас есть NA данные. Вы можете использовать %in% , который вернется FALSE при сравнении с NA .

 privacy$non_political<- with(privacy, 
                        ifelse(q19 %in% c(3, 4) | q20 %in% 2 | q21 %in% 2, 1, 0))
 

Вы можете сделать это и без ifelse этого.

 privacy$non_political<- with(privacy, 
                        as.integer(q19 %in% c(3, 4) | q20 %in% 2 | q21 %in% 2))