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语句的任何好方法?
请您提出建议和建议
谢谢!
答案 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
函数,这些函数具有相同的语法,并且在找不到匹配项时返回WHICHC
(0
),并且否则是(第一次)匹配的数量。