SAS 条件语句

SAS Conditional Statement

这个:

IF VAR1 ne VAR2 ne VAR3 ne VAR4;   

我希望这个条件检查是否:

这可能吗?

几个选项。在 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

您可以使用:

if var1=var2=var3=var4 then ...

这有一些限制,但我现在想不起来了。在直接 IF 条件下,我认为没关系。

或者:

if var1 ^in (var2 var3 var4) and
if var2 ^in (var3 var4) and
if var3 ^in (var4);
  • 或"not in"。

我认为对于四个变量的情况,六个 anded 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 与 2,3,4,测试 2 与 3,4,测试 3 与 4),但采用 array/loop 形式。