こんにちは、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プログラミング記事一覧
当サイトではSASを用いたプログラミング解説記事を多数掲載しております。
SASはデータ処理・分析をはじめ、高度な統計解析や機械学習・AIによる予測モデリングなど様々な用途に利用できます。また金融や医療を代表とする様々な業界の分析業務で広く活用されています。
最後に

お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら


