Тест на NA и выбор значений на основе результата

Мой вопрос довольно прост. Я хочу, если A[i]!=NA, то C[i]=A[i], если A[i]=NA, то C[i]=B[i], однако я всегда получаю сообщения об ошибках. Кто-нибудь может мне помочь?

A   B   C
NA  82.6    .
NA  127.2   .
NA  93.6    .
NA  105 .
NA  104 .
NA  90.6    .
NA  95.8    .
NA  103 .
NA  85.4    .
NA  81.5    .
NA  142.8   .
NA  102.3   .
NA  104 .
NA  103 .
NA  94.6    .
NA  113.8   .
NA  113.5   .
NA  74.5    .
NA  123.8   .
NA  94  .
NA  89.8    .
NA  74  .
NA  104 .
NA  100.5   .
NA  102.9   .
NA  132.5   .
NA  91  .
NA  92.5    .
NA  97  .
NA  90  .
54.6    51.7    .
NA  61  .
NA  80  .
NA  77.5    .
NA  NA  .
NA  80.6    .
NA  44.6    .
NA  37.6    .
NA  27  .
NA  NA  .
NA  NA  .
NA  NA  .

person Dan    schedule 20.09.2011    source источник


Ответы (1)


используйте 1_ :

DF <- within(DF,
   C <- ifelse(!is.na(A),A,B)
)

с DF в качестве вашего фрейма данных.

person Joris Meys    schedule 20.09.2011
comment
не будет DF <- transform(DF,C=ifelse(!is.na(A),A,B)) работать (я думаю, что Df - это опечатка, вам не нужно Df$, и у меня есть небольшое эстетическое предпочтение для transform ... - person Ben Bolker; 21.09.2011
comment
@BenBolker: хороший улов. и используете ли вы преобразование или внутри, это в основном одно и то же. Но это сработает. - person Joris Meys; 21.09.2011