たとえば
data Q;
do TEAM='A','B','C','D','E';
output;
end;
run;
do TEAM='A','B','C','D','E';
output;
end;
run;
のようなデータがあったとします。
そこに、
proc transpose data=Q out=Q1(drop=_NAME_) prefix=TEAM_;
var TEAM;
copy TEAM;
id TEAM;
run;
var TEAM;
copy TEAM;
id TEAM;
run;
とすると何がおきるでしょうか?
transposeプロシジャのcopyステートメントは
あまり活躍の機会の少ないステートメントです。
こいつに指定された変数は、元のデータセットのデータを保持します。
しかし、BYとは違って、ただそのままであるだけです。
つまり結果は
となります。
面白いですが、このような形の結果を求めることが少ないです。
今回はチームAからチームEまでが総当たりで対戦をする場合の
星取り表を作るプログラムとして使ってみました。
上の結果に少し手を加えて
data ANS;
set Q1(in=ina where=(TEAM_A^=''))
Q1(in=inb);
if ina then TEAM='';
if inb then call missing(of TEAM_:);
label TEAM='対戦表';
run;
set Q1(in=ina where=(TEAM_A^=''))
Q1(in=inb);
if ina then TEAM='';
if inb then call missing(of TEAM_:);
label TEAM='対戦表';
run;
以下が完成です。
社内イベント等で対戦表をつくることがあれば
あえて、SASでやってやりましょう。
きっとEXCELよりもめんどくさいうえに
誰も褒めてはくれないでしょう。
0 件のコメント:
コメントを投稿