通常のデータ構造であれば1つのID(人物等)の身長や体重などのデータは同じ行の別の列に格納され(横持ち)、1つのIDにつき1レコードとなります。
しかし設計によっては1つのIDで、身長で1レコード、体重で別に1レコードとなる構造(縦持ち)も当たり前のように存在します。
そんなケースで必要なレコードを抽出してグラフを描く方法です。
データ作成
data test; input name $ value param $; datalines; 佐藤 160 height 佐藤 60 weight 佐藤 20 age 田中 170 height 田中 70 weight 田中 30 age 鈴木 180 height 鈴木 80 weight 鈴木 40 age ; run;

縦持ちのデータ構造。
コード
%macro graph(val=); proc sgplot data = test(where = (param = &val)); vbar name / response = value; run; %mend; %graph(val="height"); %graph(val="weight"); %graph(val="age");
パラメータ固定でグラフを描く部分を作成 → マクロ化し、
パラメータを指定して呼び出しています。
結果



マクロを呼び出すごとにグラフが1つ作成されます。
コメント