尝试使用where语句创建一个二进制变量

时间:2019-02-12 06:26:38

标签: sas

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 :(得分:2)

where语句仅用于子集进入步骤的数据。您不能像使用IF / THEN语句那样使用它来生成赋值语句。

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

请注意,SAS将布尔表达式评估为0(假)或1(真),因此您可以使用赋值语句并跳过IF。

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