今回はFREQプロシージャにオプションを用いた場合について解説します。
FREQプロシージャの基本的な使い方については過去記事で解説しています。⇒【SAS】FREQプロシージャは頻度集計とクロス集計をする | ビジネスイッチ (how-to-business.com)
/* list */
data data1;
番号="AAAAAA"; コード="02"; 金額=1999;
output;
番号="AAAAAA"; コード="05"; 金額=2000;
output;
番号="BBBBBB"; コード="06"; 金額=2400;
output;
番号="BBBBBB"; コード="04"; 金額=1300;
output;
番号="BBBBBB"; コード="05"; 金額=4000;
output;
番号="CCCCCC"; コード="05"; 金額=5555;
output;
run;
proc sort data=data1 out=data2; by 番号; run;
PROC FREQ DATA=data2; TABLES 番号*コード / list; run;



- listによってクロス集計がリスト形式になって見やすくなる。
/* crosslist */
data data1;
番号="AAAAAA"; コード="02"; 金額=1999;
output;
番号="AAAAAA"; コード="05"; 金額=2000;
output;
番号="BBBBBB"; コード="06"; 金額=2400;
output;
番号="BBBBBB"; コード="04"; 金額=1300;
output;
番号="BBBBBB"; コード="05"; 金額=4000;
output;
番号="CCCCCC"; コード="05"; 金額=5555;
output;
run;
proc sort data=data1 out=data2; by 番号; run;
PROC FREQ DATA=data2; TABLES 番号*コード /crosslist; run;



- crosslistによってクロス集計で小計を表示することができる。
/* norow */
data data1;
番号="AAAAAA"; コード="02"; 金額=1999;
output;
番号="AAAAAA"; コード="05"; 金額=2000;
output;
番号="BBBBBB"; コード="06"; 金額=2400;
output;
番号="BBBBBB"; コード="04"; 金額=1300;
output;
番号="BBBBBB"; コード="05"; 金額=4000;
output;
番号="CCCCCC"; コード="05"; 金額=5555;
output;
run;
proc sort data=data1 out=data2; by 番号; run;
PROC FREQ DATA=data1; TABLES 番号*コード/norow; run;



- norowによって「行のパーセント」が無くなり、クロス集計が見やすくなる。
/* nocol */
data data1;
番号="AAAAAA"; コード="02"; 金額=1999;
output;
番号="AAAAAA"; コード="05"; 金額=2000;
output;
番号="BBBBBB"; コード="06"; 金額=2400;
output;
番号="BBBBBB"; コード="04"; 金額=1300;
output;
番号="BBBBBB"; コード="05"; 金額=4000;
output;
番号="CCCCCC"; コード="05"; 金額=5555;
output;
run;
proc sort data=data1 out=data2; by 番号; run;
PROC FREQ DATA=data2; TABLES 番号*コード/nocol; run;



- nocolにより、「列のパーセント」が無くなり、クロス集計が見やすくなる。
/* norow nocol */
data data1;
番号="AAAAAA"; コード="02"; 金額=1999;
output;
番号="AAAAAA"; コード="05"; 金額=2000;
output;
番号="BBBBBB"; コード="06"; 金額=2400;
output;
番号="BBBBBB"; コード="04"; 金額=1300;
output;
番号="BBBBBB"; コード="05"; 金額=4000;
output;
番号="CCCCCC"; コード="05"; 金額=5555;
output;
run;
proc sort data=data1 out=data2; by 番号; run;
PROC FREQ DATA=data2; TABLES 番号*コード/norow nocol; run;



- norowによって「行のパーセント」が無くなり、クロス集計が見やすくなる。
- nocolにより、「列のパーセント」が無くなり、クロス集計が見やすくなる。