#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))