マクロの定義(%MACRO)とSASプログラミング実行方法

当ページには広告が含まれています。

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

こんな方におすすめ!
  • SAS言語に興味がある!
  • SAS環境にマクロを定義し実行する方法が知りたい!
目次

マクロの作成方法・SASコードを用いた実行方法

SAS環境にマクロを定義し、様々な操作を簡易的に実行できるようにする方法を解説します。

SAS上でマクロを定義する場合、次のように記載するのが特徴的です。

/* マクロ作成 */
%MACRO MacroName(Parameter1, Parameter2, ・・・);
	・・・
    ・・・
    ・・・
%MEND;

/* 実行 */
&MacroName;
ポイント
  • マクロは%MACRO〜%MEND内に定義します。
  • %MACRO直後にマクロ名MacroNameを定義します。
  • マクロには複数の引数(Parameter1, Parameter2, ・・・)が指定可能できます。
  • 定義したマクロを実行する場合、&MacroName;を指定します。

それでは後述するケーススタディを踏まえて、実際にマクロを使用したSASコードを実行してみましょう。

【事前準備】サンプルデータ準備

後述するマクロ実行に利用するサンプルデータを事前に準備します。

SASプログラムの先頭に貼り付けておきましょう。

/* 
================================================
SQLサンプルデータを準備 
================================================
*/

data test_db;
input id$ product$ price store$ date date9.;
datalines;
1000 apple 100 TOKYO 4Mar1985
1001 orange 250 TOKYO 4Mar1985
1002 lemon 300 OSAKA 4Mar1985
1003 grape 400 OSAKA 4Mar1985
;
run;

【実践】マクロ定義と実行基礎

はじめに、上記データにある項目を用いて平均値を算出するmean_statというマクロを定義します。

以下実行してみましょう。

コード

/* マクロ定義 */
%MACRO mean_stat;
	PROC MEANS DATA=test_db;
	VAR price;
%MEND;

/* 実行 */
%mean_stat;

出力イメージ

N	Mean	        Std Dev	    Minimum	    Maximum
4	262.5000000	125.0000000	100.0000000	400.0000000

【実践】引数を用いたマクロの定義

定義するマクロには引数を渡すことも可能です。例えば、第一引数にデータソースsource、第二引数に変数variableを渡したmean_statというマクロを作成・実行する場合、次のように記載します。

コード

/* マクロ定義 */
%MACRO mean_stat(source, variable);
	PROC MEANS DATA=&source;
	VAR &variable;
%MEND;

/* 実行 */
%mean_stat(test_db, price);

内部で引数を呼び出す場合、引数に&をつけることも忘れないようにしましょう。

出力イメージ

N	Mean	        Std Dev	    Minimum	    Maximum
4	262.5000000	125.0000000	100.0000000	400.0000000

【実践】条件式(IF)を用いたマクロの定義

作成するマクロの中にIF文を用いた条件式を定義したい場合、次のように記載できます。

コード

/* マクロ定義 */
%MACRO data_prep(mode);
  PROC SQL;
    %IF &mode = 1 %THEN 
      %DO;
        SELECT * FROM test_db;
      %END;
    %ELSE %IF %mode = 2 %THEN 
      %DO;
        SELECT * FROM test_db WHERE store="TOKYO";
      %END;
    %ELSE 
      %DO;
        SELECT * FROM test_db WHERE product="apple";
      %END;
  QUIT;
%MEND;


/* 実行 */
%data_prep(1); /* モードが1の場合 */

出力イメージ

id	   product	price	store	date
1000	 apple	  100	TOKYO	9194
1001	orange	  250	TOKYO	9194
1002	 lemon	  300	OSAKA	9194
1003	 grape	  400	OSAKA	9194

【参考】SQLを用いたSASプログラミング

SAS環境でSQLを実行する方法について詳しく知りたい方はこちらの記事をご覧ください。

あわせて読みたい
【SAS言語】SQLのSELECT文によるデータ参照・集計方法 SASプログラム内にSQLのSELECT文を記述し、データ参照・集計する方法について解説します。

【参考】SASプログラミング記事一覧

当サイトではSASを用いたプログラミング解説記事を多数掲載しております。

SASはデータ処理・分析をはじめ、高度な統計解析や機械学習・AIによる予測モデリングなど様々な用途に利用できます。また金融や医療を代表とする様々な業界の分析業務で広く活用されています。

最後に

この記事が気に入ったら
フォローしてね!

目次