MEANS NOPRINT SAS

【SAS】MEANSも集計に便利(デフォルトで結果を出力)【NOPRINT】

投稿日:2021年11月19日 更新日:

今回はMEANSについて解説します。

似た文法でSUMMARYプロシージャがあります。

今回のMEANSプロシージャも集計を行うのですが、こちらはデフォルトで「結果」を出力します。


/*means*/
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 means data=data2; var 金額; by 番号; output out=data3; run;

  • by 番号を1グループとしてvar金額について集計する。
  • summaryと同様、meansの出力はoutput out=
  • meansはデフォルトで「結果」を出力する。

/*noprint*/
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 means data=data2 noprint; var 金額; by 番号; output out=data3; run;

  • by 番号を1グループとしてvar金額について集計する。
  • summaryと同様、meansの出力はoutput out=
  • meansはデフォルトで「結果」を出力する。
  • noprintにより、「結果」は出力されなくなる。

/* output out= 無し */
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 means data=data2; var 金額; by 番号; run;

  • by 番号を1グループとしてvar金額について集計する。
  • summaryと同様、meansの出力はoutput out=
  • meansはデフォルトで「結果」を出力する。
  • 「output out=」を無くすことにより、データセット(DATA3)の出力はされない。

/* output out= 無し noprint */
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 means data=data2 noprint; var 金額; by 番号; run;

  • by 番号を1グループとしてvar金額について集計する。
  • summaryと同様、meansの出力はoutput out=
  • meansはデフォルトで「結果」を出力する。
  • 「output out=」を無くすことにより、データセット(DATA3)の出力はされない。
  • noprintにより、「結果」は出力されなくなる。
  • 「結果」も「データセット出力」もできないと、エラーとなる。

/* class */
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 means data=data2; var 金額; class 番号; output out=data3; run;

  • class 番号を1グループとしてvar金額について集計する。
  • summaryと同様、meansの出力はoutput out=
  • meansはデフォルトで「結果」を出力する。
  • classを使うとAAAAAA, BBBBBB, CCCCCC以外に全体での集計もされる。

/* class sort無し */
data data1;
  番号="AAAAAA"; コード="02"; 金額=1999;
    output;
  番号="BBBBBB"; コード="06"; 金額=2400;
    output;
  番号="AAAAAA"; コード="05"; 金額=2000;
    output;
  番号="BBBBBB"; コード="04"; 金額=1300;
    output;
  番号="CCCCCC"; コード="05"; 金額=5555;
    output;
  番号="BBBBBB"; コード="05"; 金額=4000;
    output;
run;

proc means data=data1; var 金額; class 番号; output out=data3; run;


  • class 番号を1グループとしてvar 金額について集計する。
  • summaryと同様、meansの出力はoutput out=
  • meansはデフォルトで「結果」を出力する。
  • classを使うとAAAAAA, BBBBBB, CCCCCC以外に全体での集計もされる。
  • classを使うと番号が並んでなくても、実行できる。

/* class N*/
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 means data=data2 N; var 金額; class 番号; output out=data3; run;

  • class 番号を1グループとしてvar 金額について集計する。
  • summaryと同様、meansの出力はoutput out=
  • meansはデフォルトで「結果」を出力する。
  • classを使うとAAAAAA, BBBBBB, CCCCCC以外に全体での集計もされる。
  • classを使うと番号が並んでなくても、実行できる。
  • Nを指定すると、「結果」はサンプル数のみ表示する。

/* class MEDIAN*/
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 means data=data2 MEDIAN; var 金額; class 番号; output out=data3; run;

  • class 番号を1グループとしてvar 金額について集計する。
  • summaryと同様、meansの出力はoutput out=
  • meansはデフォルトで「結果」を出力する。
  • classを使うとAAAAAA, BBBBBB, CCCCCC以外に全体での集計もされる。
  • classを使うと番号が並んでなくても、実行できる。
  • MEDIANを指定すると、「結果」は中央値のみ表示する。

-MEANS, NOPRINT, SAS

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

【SAS】DROPはデータセットから変数を削除する

今回はDROPについて解説します。 (対比:KEEP 【SAS】KEEPはカラムの選択に使える。 | ビジネスイッチ (how-to-business.com)) /* drop_1 */ data …

【SAS】SASで良く使うテクニック。その11「Ctrl+/」~範囲指定でコメントを入れたい時~【SAS Studio】

今回はSASで良く使うテクニックということで、範囲指定でコメントを入れたい時は、「Ctrl+/」が役に立つ理由を解説していきます。 以下のようにソースコードを準備します。(ソースコードの内容は何でも良 …

【SAS】INTNX関数は指定期間の条件を満たす日付けを返す。

今回はINTNX関数について解説します。 /* intnx_1 */ data data1; Id1 = intnx(“YEAR”,’16jan2022’d,1); format Id1 yymmdd …

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

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

【SAS】PROC PRINTTO LOGはログをファイルとして出力する。【NEW】

今回はPROC PRINTTO LOGについて解説します。 /* log_1 */ proc printto log = “/home/xxxxxxxxxx/sasuser.log” new; run …