CROSSLIST FREQ LIST NOCOL NOROW SAS

【SAS】FREQプロシージャは頻度集計とクロス集計をする その2【LIST】【CROSSLIST】【NOROW】【NOCOL】

投稿日:2022年1月3日 更新日:

今回は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により、「列のパーセント」が無くなり、クロス集計が見やすくなる。

-CROSSLIST, FREQ, LIST, NOCOL, NOROW, SAS

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

【SAS】%PUTステートメントは文字列をログに出力する。その2

今回も%PUTについて解説します。 以下の記事では、%putにより、文字列をログに表示できるという内容でした。 【SAS】%PUTステートメントは文字列をログに出力する。その1 /* 1+1 */ % …

【SAS】TRIM関数は文字列の連結時に末尾のスペースを除去できる。

今回はTRIM関数について解説します。 /* trim */ data data1; Id1=1111; Char1=”AA AA”; output; Id1=2222; Char1=” BBBB”; …

【SAS】OPTIONS NOMPRINT NOSOURCEはログに出力されるソースコードを非表示にできる。

今回はOPTIONS NOMPRINT NOSOURCEについて解説します。 /*nomprint nosource_1 */ options nomprint nosource; data data …

【SAS】INPUTは文字型を数値型に変換する

今回はINPUTについて解説します。 /*8桁*/ data work.a; a = input(“20061228”, 8.); run; 文字型⇒数値型への変換はinputを使う。文字型&#822 …

【SAS】ROUNDは四捨五入して数値を丸める

今回はROUNDについて解説します。 /* 正常形 */ data work.data1; _100 = round(1234.56789, 100); _10 = round(1234.56789, …