Попытка создать двоичную переменную, используя инструкцию where - PullRequest
0 голосов
/ 12 февраля 2019
NGI IF  RAMN    LASG    LASD    RFA1    RFA2    Order   Money
2001    6   52  15  200505  1   6   1   9.07
2002    1   23  23  200509  1   6   1   23.29
2003    8   99  16  200505  1   6   1   12.41
2004    20  100 5   200511  4   4   1   5.27
2005    11  114 10  200603  3   6   1   10.63
2006    9   138 20  200512  1   6   1   15.40

Необходимо создать двоичную переменную для денег, если money < 20, то 0 в противном случае 1 с использованием оператора where.Сделал это, используя if, но где продолжает давать мне ошибку 0 obs.

1 Ответ

0 голосов
/ 12 февраля 2019

Оператор where используется только для подмножества данных, поступающих на шаг.Вы не можете использовать его для генерации оператора присваивания, как вы могли бы использовать оператор IF / THEN.

data want;
  set have ;
  if money < 20 then newvar=0; 
  else newvar=1;
run;

Обратите внимание, что SAS оценивает логические выражения как 0 (false) или 1 (true), поэтому вы можете просто использоватьоператор присваивания и пропустить IF.

data want;
  set have ;
  newvar = money >= 20;
run;
...