此:
IF VAR1 ne VAR2 ne VAR3 ne VAR4;
我希望这个条件检查是否:
这可能吗?
答案 0 :(得分:5)
我认为对于四个变量情况,六个AN的IF可能是最好的。但是,如果你想这样做无限制,阵列解决方案是显而易见的;这里的工作比需要的多,但工作量少于10个变量 - > 45 ifs。
data want;
set have;
match=0;
array vars var:;
do _t = 1 to dim(vars)-1;
do _u = _t+1 to dim(vars);
if vars[_t] = vars[_u] then match=1;
end;
if match=1 then leave;
end;
run;
这与6 if(测试1 vs 2,3,4,测试2 vs 3,4,测试3 vs 4)相同,但是采用数组/循环形式。
答案 1 :(得分:1)
有两种选择。在and
之间以长格形式执行:
VAR1 ne VAR2 and VAR1 ne VAR3 and VAR1 ne VAR4 and
VAR2 ne VAR3 and VAR2 ne VAR4 and VAR3 ne VAR4
或者使用等于TRUE值的数字作为1进行测试:
sum(VAR1 = VAR2,
VAR1 = VAR3,
VAR1 = VAR4,
VAR2 = VAR3,
VAR2 = VAR4,
VAR3 = VAR4) = 0
答案 2 :(得分:-1)
您可以使用:
if var1=var2=var3=var4 then ...
这有一些限制,但我现在无法回想起它们。在直接的IF条件下,我认为没关系。
答案 3 :(得分:-1)
或者:
if var1 ^in (var2 var3 var4) and
if var2 ^in (var3 var4) and
if var3 ^in (var4);