SAS 条件语句
SAS Conditional Statement
这个:
IF VAR1 ne VAR2 ne VAR3 ne VAR4;
我希望这个条件检查是否:
- VAR1 不等于 VAR2、VAR3、VAR4
- VAR2 不等于 VAR1、VAR3、VAR4
- VAR3 不等于 VAR1、VAR2、VAR4
- VAR4 不等于 VAR2、VAR3、VAR1
这可能吗?
几个选项。在 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 形式。
这个:
IF VAR1 ne VAR2 ne VAR3 ne VAR4;
我希望这个条件检查是否:
- VAR1 不等于 VAR2、VAR3、VAR4
- VAR2 不等于 VAR1、VAR3、VAR4
- VAR3 不等于 VAR1、VAR2、VAR4
- VAR4 不等于 VAR2、VAR3、VAR1
这可能吗?
几个选项。在 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 形式。