こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
こんな方におすすめ!
- SASプログラミングに興味がある!
- SASのマクロ変数について詳しく知りたい!
目次
【SAS】マクロ変数とは
SASのマクロ変数とは、SASのマクロ言語において使用される特殊変数です。プログラムの柔軟性を高め、コードの再利用性を向上させるために使用されます。
【SAS実践】マクロ変数の基本構文
初めに、SASのマクロ変数の基本構文について解説します。
マクロ変数の定義方法
マクロ変数の定義方法について以下に整理します。
- マクロ変数は
%let
ステートメントを使用して定義する。 - マクロ変数利用の際は
&hello
のように先頭に&
をつける。 - マクロ変数の出力を確認したい場合、
%put
ステートメントを用いるとログ上で確認できる。
コード
/* マクロ変数を定義 */
%let hello = "Hello World!";
/* マクロ変数をログ出力 */
%put &hello;
出力イメージ
Hello World!
マクロ変数の一覧表示
SASプログラム上で以下を入力すると、利用可能なマクロ変数を一覧表示できます。
コード
%put _all_;
出力イメージ
上記を実行すると、利用可能なマクロ変数がすべて確認できます。
GLOBAL _CLIENTAPP 'SAS Studio'
GLOBAL _CLIENTAPPABREV Studio
GLOBAL _CLIENTAPPVERSION 3.81
GLOBAL _EXECENV SASStudio
GLOBAL _MACRO_FOUND 0
AUTOMATIC SYSCC 0
AUTOMATIC SYSCHARWIDTH 1
AUTOMATIC SYSCMD
AUTOMATIC SYSDATASTEPPHASE
AUTOMATIC SYSDATE 26JAN24
AUTOMATIC SYSDATE9 26JAN2024
AUTOMATIC SYSDAY Friday
AUTOMATIC SYSDEVIC
AUTOMATIC SYSDMG 0
・・・
【SAS実践】利用頻度の高いマクロ変数
続いて、利用頻度の高いマクロ変数をいくつかご紹介します。
本日の日付・曜日・時刻|sysdate・sysday・systime
マクロ変数を用いて本日日付・曜日・時刻を取得したい場合、次のように記述します。
コード
%PUT "本日日付: &sysdate";
%PUT "本日曜日: &sysday";
%PUT "本日時刻: &systime";
出力イメージ
"本日日付: 26JAN24"
"本日曜日: Friday"
"本日時刻: 22:30"
文字列のインデックス取得|%index
指定した文字列のインデックスを返すマクロ変数として以下が活用できます。
コード
/* マクロ変数定義 */
%let value = hello my name is Mike;
/* %indexのマクロ変数定義 */
%let position = %index(&value, is);
/* ログ出力 */
%put position: &position;
出力イメージ
position: 15
指定位置の文字列取得|%scan
指定した位置の文字列を取得する場合、以下のマクロ変数が有効です。
コード
%let text = ABCD.EFGH/IJKL/MNKOP;
%let WORD = %SCAN(&text,3); /* 3番目のワードを返す(1番目 ABCD 2番目 EFGH 3番目 IJKL) */
%let PART = %SCAN(&text, 1, D); /* 1番目のワードのDより前を返す(1番目 ABCD) */
%put Word IS &WORD AND PART IS ∂
出力イメージ
Word IS IJKL AND PART IS ABC
【参考】マクロの定義|%MACRO
SASプログラミングをもとにマクロの定義も可能です。個別にカスタマイズされたマクロを作成できるようになると、様々な用途で利便性を感じれるでしょう。詳しくはこちらの記事でまとめていますため、併せてご覧ください。
【参考】SASプログラミング記事一覧
当サイトではSASを用いたプログラミング解説記事を多数掲載しております。
SASはデータ処理・分析をはじめ、高度な統計解析や機械学習・AIによる予測モデリングなど様々な用途に利用できます。また金融や医療を代表とする様々な業界の分析業務で広く活用されています。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら