私が書いているSASプログラムでは、4つの異なる作業テーブルを1つのテーブルに結合するのと同等の処理を行う必要があります。私は最初にPROC SQL
でそれをやろうとしていましたが、それはすぐに手を抜いてしまったので、データステップでMERGE
を設定することにしました。一例として、複数のテーブルを1つのPROC SORTで並べ替える
:
proc sort data = TABLE_1; by COL1 COL2 COL3;
proc sort data = TABLE_2; by COL1 COL2 COL3;
proc sort data = TABLE_3; by COL1 COL2 COL3;
proc sort data = TABLE_4; by COL1 COL2 COL3;
data NEW_TABLE;
merge TABLE_1 TABLE_2 TABLE_3 TABLE_4;
by COL1 COL2 COL3;
まったく同じフィールドセットで個別に各テーブルをソートする必要があるために種類の面倒なようです。私は、列名のリストと同等になるようにマクロ変数を設定しましたが、各テーブルに対して1つの行が必要です。
PROC SORT
を複数のテーブルに同時に書き込む方法はありますか?私は、SASの知っているから、私は仕事にこのような何かを期待する:
proc sort data = (TABLE_1 TABLE_2 TABLE_3 TABLE_4); by COL1 COL2 COL3;
、さらにはこのような何か、テーブルはこの例のよう番号を付けた場合:
proc sort data = (TABLE_1-TABLE_4); by COL1 COL2 COL3;
しかし、私はしましたいずれかの仕事をすることができませんでした。確かに私は配列を通して設定しようとはしていないが、それはそのような短いテーブルのリスト(テーブルの長いリストは恐らく別のマージソリューションを完全に保証するだろう)のために過剰なもののように思えるからだ。
応答hereから判断すると、複数のテーブルでPROCを一度に実行することについて楽観的ではありませんが、ソートの仕方は異なっています。
MERGEとFULL JOINは、多対多の一致を別々に処理することを忘れないでください。 – Tom
'proc sql'は最初にソートせずに複数のテーブルに同時に参加できますが、それほど効率的ではありません。 – david25272