SAS:IF声明中的表达

时间:2012-07-03 10:12:02

标签: if-statement expression sas

Sas是否提供了chain - 表达式?

的机制

Sas是否提供In - 条款的机制?

简单示例:

  a = '09MAY2010'd;
  b = '17MAY2010'd;

if (a<=c<=b) then do; /*code*/ end;
if (c in (a:b)) then do; /*code*/ end;

也许是if / where语句的任何好方法?
请您提出建议和建议 谢谢!

2 个答案:

答案 0 :(得分:2)

你的例子,改了一点:

data _null_;
    a = '09MAY2010'd;
    b = '17MAY2010'd;
    c = '17MAY2010'd;

    if (a<=c<=b) then do;
        putlog "a<=c<=b";
    end;

    select (c); 
        when (a, b) putlog "in a, b";
        when ('17MAY2010'd) putlog "'17MAY2010'd";/* not used, only first match is executed */
        otherwise;
    end;

run;

与IF一起使用的IN运算符或WHERE子句中的常量需要常量。

答案 1 :(得分:0)

除了IN运算符,它只接受paranthesis中的常量值,还有一个(未记录的)IN函数,可以与变量一起使用,因此代替{{1}你可以使用if c in(a,b),当a和b是变量时,它也会起作用。

另一种可能性是使用if in(c,a,b)WHICHN函数,这些函数具有相同的语法,并且在找不到匹配项时返回WHICHC0),并且否则是(第一次)匹配的数量。