1

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 语句技术?
你的建议和建议,请。
谢谢!

4

2 回答 2

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 或 WHERE 子句一起使用的 IN 运算符需要列表中的常量。

于 2012-07-03T12:59:21.027 回答
0

除了IN只接受括号内的常量值的运算符之外,还有一个(未记录的)IN函数,它可以与变量一起使用,因此当 a 和 b 是变量时,if c in(a,b)您也可以使用which 来代替。if in(c,a,b)

另一种可能性是使用WHICHNorWHICHC函数,它具有相同的语法,当未找到匹配项时返回0( ),否则返回(第一个)匹配项的数量。FALSE

于 2017-12-08T14:07:41.447 回答