プログラミングと機械学習のメモ
日付: カテゴリ: SAS
前回の続きです。今回は棒グラフ、折れ線グラフを描きましょう。
今回はあるクラスの人の名前、性別、年齢、身長、体重等が入っているclassデータセットを使用します。以下のコードを実行してください。
data class;
set sashelp.class;
run;
ods graphics on;
ods graphics /width=16cm height=12cm;
こんなデータです。
一番シンプルなのは度数棒グラフです。年齢ごとの度数棒グラフを出してみましょう。
title "年齢ごとの度数棒グラフ(縦)";
proc sgplot data=class;
vbar age;
run;
年齢ごとに性別がどれくらいの割合いるかを調べたいのであれば、「group=」が便利です。
title "年齢・性別ごとの度数棒グラフ(縦)";
proc sgplot data=class;
vbar age/
group=sex groupdisplay=stack;
run;
度数ではなく、ある連続変数値を棒にしたいときもあります。その場合、「response=」を使用しましょう。
title "名前ごとの体重の棒グラフ(縦)";
proc sgplot data=class;
vbar Name/response=Weight;
run;
横棒グラフにしたいときはhbarステートメントを使用しましょう。
title "名前ごとの体重の棒グラフ(横)";
proc sgplot data=class;
hbar Name/response=Weight;;
run;
折れ線グラフを描くために、IBM、Intel、Microsoftの株の値段が入っているStocksデータを加工して使用します。以下のコードを実行してください。
data stocks_2000;
set sashelp.stocks;
file log;
where substr(put(date, yymmddn8.), 1, 4)="2000";
format date yymmddn8.;
run;
proc sort data=stocks_2000;
by date;
run;
proc transpose data=stocks_2000 out=stocks_2000_transpose;
var volume;
by date;
id stock;
run;
こんなデータです。
折れ線グラフを描くにはvlineを使用します。今回は3つの線を同時に書きます。
title "StockごとのDate-Volume折れ線グラフ";
proc sgplot data=stocks_2000_transpose;
vline date/response=IBM;
vline date/response=Intel;
vline date/response=Microsoft;
xaxis type=time interval=month;
yaxis min=0 max=150000000 label="Volume";
run;
ちなみに、今まで使っていませんでしたが、sgplotのxaxisとyaxisはどのグラフでも使用可能で、x軸やy軸の設定を行います。グラフの見た目にこだわりたい方はぜひ使用してください!