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】IFステートメントは処理を分岐できる。その1

今回はSASのif文について解説していきたいと思います。 【IF文の関連記事】 (明示的、暗黙的OUTPUT:【SAS】OUTPUTとDELETEの「明示的な使い方」「暗黙的な使い方」 | ビジネスイ …

【SAS】INDEXC関数は文字列から特定の文字を探して位置を返す。

今回はINDEXC関数について解説します。 data data1; Id1=”1111″; Id2=”1111″; Id3=”1111″; output; Id1=”2111″; Id2=”2111″ …

【SAS】%MACROはマクロを定義することができる。その2 同名マクロによる再定義【%MEND】

今回は同名マクロによる再定義について解説していきたいと思います。(前回の記事:【SAS】%MACROはマクロを定義することができる。【%MEND】 | ビジネスイッチ (how-to-business …

【SAS】SORTプロシージャはBYで指定した変数で並べ替える その1 昇順

今回はSORTプロシージャについて解説します。 /*sort1*/ data data1; id1=”1111″; id2=”1111″; output; id1=”1111″; id2=”2222″ …

【SAS】SASで良く使うテクニック。その7 「条件付き書式」~差分があるセルに色を付けたい時~【Excel】

今回はSASで良く使うテクニックということで、データセットのコンペアにおいて、差分があるセルに色を付けたい時ときは「条件付き書式」が役に立つ理由を解説していきます。 (参考:【SAS】SASで良く使う …