SAS Base Programmer 練習問題4
data work.totalsales (keep = monthsales{12} ); set work.monthlysales (keep = year product sales); array monthsales {12} ; do i=1 to 12; monthsales{i} = sales; end; run;
このプログラムをサブミットするとどのような結果になるか。
work.monthlysalesは5年間分のデータ5オブザーベーションが格納されているとする
A. データエラー
B. シンタックスエラー
C. 警告が出るがwork.totalsalesデータセットが作られる
D. エラーや警告は出ず、work.totalsalesデータセットが作られる
出典はこちら
答え: B (要反転)
arrayに対してkeepやdropを指定することはできない。"無効な変数名"のシンタックスエラーとなる。
この場合、keepを指定したい場合は以下のようにする。
data work.totalsales (keep = monthsales1-monthsales12 ); set work.monthlysales (keep = year product sales); array monthsales {12} ; do i=1 to 12; monthsales{i} = sales; end; run;
もしくは、
data work.totalsales (drop = i year product sales); set work.monthlysales (keep = year product sales); array monthsales {12} ; do i=1 to 12; monthsales{i} = sales; end; run;
のようにdropを使う