最近のお気に入りオプションなので紹介したいと思います。
サンプルデータ
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 件のコメント:
コメントを投稿