2014-10-23 2 views
1

Я пытаюсь построить новую переменную, используя инструкцию ifelse, которая заявляет, что если у вас есть показатель MMSE < 24 или быстрая оценка> = 4 на любом w1 или w2, вы классифицируется как 1, если не 0.Построение новой переменной с использованием ifelse с отсутствующими данными

Dataframe.

mmse_w1 mmse_w2 fast_w1 fast_w2 
1  27  29  1  1 
2  28  25  1  13 
5  30  22  1  4 
7  16  4  4  16 
38  25  NA  2  NA 
45  0  NA  11  NA 
72  NA  NA  10  NA 
414  NA  NA  NA  NA 

dat$dementia <- with(dat, ifelse(mmse_w1 <24 | fast_w1 >=4 | mmse_w2 <24 | fast_w2 >=4, 1, 0)) 

    mmse_w1 mmse_w2 fast_w1 fast_w2 dementia 
1  27  29  1  1  0 
2  28  25  1  13  1 
5  30  22  1  4  1 
7  16  4  4  16  1 
38  25  NA  2  NA  NA 
45  0  NA  11  NA  1 
72  NA  NA  10  NA  1 
414  NA  NA  NA  NA  NA 

Однако в тех случаях, как номер 38, где у вас есть данные, отсутствующие в w2 и и MMSE является> 24 или быстро является < 4, случаи классифицируется как NA, а не 0.

Я видел это post, у которого была аналогичная проблема, но мне не удалось заставить это решение работать.

Как я могу это решить?

Спасибо.

+0

Что должен грести 414 быть? NA или ноль? –

ответ

3

С TRUE 1 и FALSE 0 внутри, pmax будет делать это для вас:

with(dat, pmax(mmse_w1 <24,fast_w1 >=4,mmse_w2 <24,fast_w2 >=4,na.rm=TRUE)) 
#[1] 0 1 1 1 0 1 1 NA 
+0

Спасибо, что сработало отлично. – Andrews