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】SASで良く使うテクニック。その9 「Alt+E+S+V+E」~縦横の並び替えを行いたいとき~【Excel】

今回はSASで良く使うテクニックということで、縦横の並び替えを行いたい時は、「Alt+E+S+V+E」が役に立つ理由を解説していきます。 具体的な使用場面は、 データセットの場合、カラムは横並びですが …

【SAS】UPCASE関数は文字列を大文字化する。

今回はUPCASE関数について解説します。 /* upcase */ data data1; Id1=1111; char1=”US”; char2=”aaa”; output; Id1=2222; …

【SAS】DATAステートメントは複数データセットを出力できる。

今回はDATAステートメントで複数データセットを出力する方法について解説します。 /* data2 data3_1 */ data data1 ; id1=”1111″; id2=”1111″; id …

【SAS】^=(ノットイコール)

今回は^=について解説します。 /* ^=”” */ data data1; id=”A”; chiku=”SHINJUKU”; output; id=”B”; chiku=”ICHIGAYA”; o …

【SAS】IFステートメントは処理を分岐できる。その2~ELSE IF、ELSE~

前回はIF文のオーソドックスな構文を解説しましたが、今回はELSE IFとELSEを使った構文についても解説していきます。 (参考:【SAS】IFステートメントは処理を分岐できる。その1 | ビジネス …