Как выполнить оператор ifelse в R с длиной больше единицы? - PullRequest
0 голосов
/ 07 февраля 2020

Я работаю над набором данных, и мне нужно найти все четные и нечетные записи 4 переменных. У меня есть код SAS, где это было сделано, но операторы if else кажутся мне более простыми в SAS, чем в R. Я ищу результат, где переменная even закодирована как единица, если записи четные, и 0, если они странный. Код SAS:

data even;
  set Validation;
  if mod(MNTHLY_ED_VISITS,2)=0 or mod(FIRE_RLTD_ED_VISITS,2)=0 or mod(NON_FIRE_RLTD_ED_VISITS,2)=0 or mod(UNKN_ED_VISITS,2)=0 then even=1;
  else even=0;
run;

proc freq data=even;
   tables even;
run;

В R я пробовал вложенные ifelse утверждения, думая, что это будет работать. Код:

even <- ifelse(mod(ED_CO$MNTHLY_ED_VISITS,2)==0, ifelse(mod(ED_CO$FIRE_RLTD_ED_VISITS,2)==0, ifelse(mod(ED_CO$NON_FIRE_RLTD_ED_VISITS,2)==0, ifelse(mod(ED_CO$UNKN_ED_VISITS)==0))),1,0)

Это дало мне ошибку "Ошибка в ifelse (мод (ED_CO $ MNTHLY_ED_VISITS, 2) == 0, ifelse (мод (ED_CO $ FIRE_RLTD_ED_VISITS,: неиспользованный аргумент (0)).

Любая помощь с этим будет принята с благодарностью.

1 Ответ

1 голос
/ 07 февраля 2020

Вам не нужно использовать вложенные ifelse или какие-либо дополнительные пакеты. Вы можете сделать это просто в базе R, используя %% и &.

even <- 1 - with(ED_CO, 
                 MNTHLY_ED_VISITS %% 2 & 
                 FIRE_RLTD_ED_VISITS %% 2 & 
                 NON_FIRE_RLTD_ED_VISITS %% 2 & 
                 UNKN_ED_VISITS %% 2)

. Это даст значение 0, если все эти поля нечетные, или значение 1, если любое из них четное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...