その1では、MEANSプロシジャから計算可能な統計量を紹介しました。
なお統計量とは、標本(サンプル)から算出されるその集団の
特性値のことです。
何らかのグループごとに統計量を計算する機会がよくあります。
たとえば、性別ごとに血圧の平均を調べる、生産ラインごとに
生産物のばらつきを確かめるなど、といった場合です。
MEANSプロシジャでグループごとに統計量を計算するためには、
大きく2つの方法があります。
1つは、CLASSステートメントの利用です。グループを表す変数で
データセットがソートされていてもいなくても利用できます。
proc means data=sashelp.prdsale n nmiss min mean max;
class country;
var actual;
run;
/*
MEANS プロシジャ
分析変数 : ACTUAL 売り上げ実績
オブザべーション
国 数 N 欠損値の数 最小値 平均 最大値
------------------------------------------------------------------------------------------------------------
カナダ 480 480 0 3.0000000 514.5625000 1000.00
ドイツ 480 480 0 3.0000000 512.4958333 1000.00
米国 480 480 0 4.0000000 494.4770833 984.0000000
------------------------------------------------------------------------------------------------------------
*/
もう1つの方法は、SORTプロシジャを利用してグループ変数で
ソートしておき、続いてMEANSプロシジャでBYステートメントを
使用することです。
proc sort data=sashelp.prdsale out=sortdata;
by country;
run;
proc means data=sortdata n nmiss min mean max;
by country;
var actual;
run;
/*
--------------------------------------------------- 国=カナダ ----------------------------------------------------
MEANS プロシジャ
分析変数 : ACTUAL 売り上げ実績
N 欠損値の数 最小値 平均 最大値
------------------------------------------------------------------
480 0 3.0000000 514.5625000 1000.00
------------------------------------------------------------------
--------------------------------------------------- 国=ドイツ ----------------------------------------------------
分析変数 : ACTUAL 売り上げ実績
N 欠損値の数 最小値 平均 最大値
------------------------------------------------------------------
480 0 3.0000000 512.4958333 1000.00
------------------------------------------------------------------
---------------------------------------------------- 国=米国 -----------------------------------------------------
分析変数 : ACTUAL 売り上げ実績
N 欠損値の数 最小値 平均 最大値
------------------------------------------------------------------
480 0 4.0000000 494.4770833 984.0000000
------------------------------------------------------------------
*/
SASの昔のバージョンでは、後者の方法が早いと言われて
いました。もしデータセットが事前にソートされていれば
今でもその通りですが、ソートされていなければ
前者の方が効率的です。