以下を実行すると、、
data DT1 DT2 DT3;
set SASHELP.CLASS; run; |
データセットSASHELP.CLASSをセットしたデータセットDT1, DT2, DT3をいっぺんに作ることが出来ます。
また、以下のように書くことも出来ます。
data DT1 DT2 DT3;
set SASHELP.CLASS;
if AGE=13 then output DT1;
if AGE=15 then output DT2;
output DT3;
run;
|
・ AGE=13のオブザベーションをDT1に出力
・ AGE=15のオブザベーションをDT2に出力
・ 条件なしでオブザベーションをDT3に出力
注意:データステップ中にOUTPUTステートメントとMODIFYステートメントを併用していない前提となります(無限ループになったり挙動が変わることがあるので・・)
たとえば、以下の赤文字の処理、変数FLAGがDT1とDT2に作成されますが、、
data DT1 DT2;
set SASHELP.CLASS;
if AGE=13 then output DT1;
if AGE=15 then output DT2;
if AGE=13 then FLAG=1; *** × この書き方はダメ ******;
run;
|
DT1には「AGE=13」のオブザベーションがありますが、「FLAG=1」が反映されません。
というわけで、OUTPUTの前に移動してやります。
data DT1 DT2 DT3;
set SASHELP.CLASS;
if AGE=13 then FLAG=1;
if AGE=13 then output DT1;
if AGE=15 then output DT2;
run;
|
0 件のコメント:
コメントを投稿