2015年7月28日火曜日

MEANSまたはSUMMARYプロシジャで使えるIDGROUPオプションの紹介


最近のお気に入りオプションなので紹介したいと思います。

サンプルデータ
data DT1;
input A B$;
cards;
2 aa
1 bb
3 cc
2 dd
. ee
;

サンプルに対して以下のプログラムを実行すると、、
proc summary data=DT1;
   output out=OUT1 idgroup( max(A) out[5] (A B)= );
run;

なんか横一行のデータが出来ました。

IDGROUPオプションの中に注目してみましょう。
max(A) out[5] (A B)=」 で変数Aが大きい順に行を並べ、上位5行のAとBの値をそれぞれ横に転置して表示するようなイメージです。

大きい順で同値がある場合(今回の例では、1行目と4行目のAが両方2)、オブザベーションの並び順で参照していきます(1行目、4行目の順で参照していく)。


注意点1
上の例で「max(A)」だけだとAが欠損値のオブザベーションは選択されません(今回の例では5行目)
欠損値のやつも引っ張ってきたい場合、以下の通りmissingオプションを追加します。

proc summary data=DT1;
   output out=OUT1 idgroup( max(A) missing out[5] (A B)= );
run;

また「min(A)」とすれば変数Aが小さい順になります。


注意点2
制限として1つの変数につき横に並べられるのは100個までのようです。

0 件のコメント:

コメントを投稿