複数のデータ セットを 2 つの数値の間で別々のグループに分けて比較しようとしています。もともと、私は次のような声明を持っていました。
if COLUMN1 gt 0 and COLUMN1 LE 1000 then PRICE_GROUP = 1000;
これを1000から100,000まで上げました。唯一の問題は、各 price_group に含まれる数を数えると、一部の price_group が欠落していたことです (57,000 には値がなかったため、(Price_group) を数えたときに一部のグループには表示されませんでした)。私が考える解決策は、それぞれの境界を含むテーブルを作成し、実際の値と上限および下限を比較することです。
proc iml;
mat = j(100,2,0);
total = 100000;
mat[1,1] = 0;
mat[1,2] = mat[1,1] + (total/100);
do i = 2 to nrow(mat);
mat[i,1] = mat[i-1,1] + (total/100);
mat[i,2] = mat[i,1] + (total/100);
end;
create dataset from mat;
append from mat;
quit;
これにより、値を比較できるテーブルが作成されますが、proc iml 以外に簡単な方法はありますか? 次に、ループを実行して各値を 2 つの列と比較し、テーブルに新しい列を作成して、各バケットにカウントを入れます。これは依然として非効率な集中的なプロセスのようです。