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】INDEXC関数は文字列から特定の文字を探して位置を返す。

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

【SAS】SAS日時値をyyyymmddhhmmss形式にする。【PUT】【DATETIME】【DATEPART】【TOD】

今回はdatetime関数を使って、SAS日時値を取得した後、yyyymmddhhmmss形式に加工する方法を解説していきます。 (参考PUT:【SAS】PUTはSAS日付値をフォーマットを変換して表 …

【SAS】SAS Studioのフィルター機能の使い方を解説 その2 ~数値型~

今回もSAS Studioのフィルター機能について解説します。(前回:【SAS】SAS Studioのフィルター機能の使い方を解説 その1 ~文字型~ | ビジネスイッチ (how-to-busine …

【SAS】SUBSTR関数は文字列から指定した文字数分切り取る。その2 再帰的使用

今回はSUBSTR関数の再帰的使用について解説していきます。 /* 再帰的 */ data data1; id1=”123456789″; output; run; data data2; set d …

【SAS】SASで良く使うテクニック。その3 「Ctrl+D」~データセットのオブザベーション数が多いとき~【Excel】

今回はSASで良く使うテクニックということで、データセットのオブザベーション数(行数)が多いときは「Ctrl+D」が役に立つ理由を解説していきます。 (参考:【SAS】SASで良く使うテクニック。その …