data test; set A;
if a1--a21>0 then b=0;
else b=1;
run;
「a1--a21>0」が a1>0 および a2>0 and....a21>0 を意味するかどうかは誰にもわかりませんか? そうでない場合、a1>0 および a2>0 および....a21>0 をどのように表現できますか? ありがとうございました!
簡単な解決策は、MIN 関数を OF と共に使用することです。これにより、配列と同様に変数全体を読み取ることができます。a1--a21 を a1-21 に変更したことに注意してください。a1--a21 は a1 と a21 の間で物理的に発生するすべての変数を使用すると言いますが、a1-a21 は変数 a1、a2、a3、...、a21 を使用すると言います。おそらくほとんどのテーブル構造で同じですが、この例では単一の - を使用する方が安全です。
注意すべき唯一のことは、欠損値があるかどうかです。これらは私のソリューションでは考慮されません。
data test; set A;
if min(of a1-a21)>0 then b=0;
else b=1;
run;
あなたがしようとしていることができるとは思えません。私はいつもこれを配列で行います。
data test;
a1 = 1;
a2 = 0;
a3 = 1;
array a[3];
ok = 1;
do i=1 to 3;
ok = ok and a[i]>0;
end;
if ok then put "YES";
else put "NO";
run;
a2 の値を変更すると、これが機能することがわかります。