Programming/SAS

[SAS] 업무 시 유용한 매크로 변수 활용법

Kanii 2025. 1. 18. 12:00
반응형

오늘은 업무를 진행할 때 유용한 몇가지 매크로 변수 활용법에 대해 포스팅하고자한다.


1. %LET : 매크로 변수 정의

%LET VAR1 = 100;    /*VAR1이라는 매크로 변수에 숫자 100을 할당*/
%LET VAR2 = Name; /*VAR2라는 매크로 변수에 문자 Name을 할당*/

%LET은 특정 값을 갖는 매크로 변수를 선언하는 문장이다.

 

예를 들어, 매달 월 별 매출에 대한 평균 계산 및 그래프 등을 산출하는 여러 구문을 반복적으로 수행하는 경우,

모든 구문에서 '월'을 변경하는 것이 굉장히 번거로울 수 있다.

 

여기서 매크로 변수를 활용하면, 가장 상단의 MONTH를 원하는 달로 변경하여

연속되는 코드를 개별 수정 없이 효율적이게 업무를 수행할 수 있다.

 

%LET MONTH = 1;
%LET DATA = DF

PROC MEANS DATA= &DF MEAN;
  WHERE MON = &MONTH;
  CLASS SHOP;
  VAR INCOME ;
RUN;
........

 

2. %PUT : 매크로 변수 값 출력

%PUT &VAR;

%PUT문을 사용하면 매크로 변수가 가지고 있는 값을 로그창에 출력해준다.

매크로 변수 디버깅 시, 유용하게 사용할 수 있다.

70은 로그 행번호

반응형

3. %INC : 외부 프로그램 호출

%INC "파일경로";

%INC문을 사용하면 외부 SAS 프로그램을 호출하여 실행할 수 있다.

 

나는 업무를 진행하면 여러개의 SAS program을 생성하는 경우가 많은데, 업무를 수행 할 때마다 모든 프로그램을 열어서 개별적으로 실행하는 것은 굉장히 비효율적이다.

 

이때, %INC 문을 사용하여 모든 프로그램을 일괄로 실행한다.

%LET PROG = 모든 SAS program이 저장된 경로;

%INC "&PROG\PROGRAM1.SAS";
%INC "&PROG\PROGRAM1.SAS";
%INC "&PROG\PROGRAM1.SAS";
....

여기서 ‼️ 주의 사항 ‼️

문자열 안에서 매크로 변수를 호출하고 싶은 경우, 반드시 큰 따옴표(")를 사용해야 매크로 변수가 정상적으로 호출된다.

 

4. PROC SQL을 활용한 매크로 변수 선언

PROC SQL NOPRINT;
SELECT 값 INTO :변수명 FROM EXAMPLE;QUIT;

PROC SQL 구문에서 SELECT ~ INTO: 문장을 활용하여 매크로 변수를 선언할 수 있다.

‼️ 주의 사항 ‼️

콜론(:)은 변수명 앞에 붙혀서 사용해야 매크로 변수가 정상적으로 선언된다.

 

PROC SQL의 여러가지 용법과 결합하여 한번에 여러개의 매크로 변수를 선언 할 수도 있다.

DATA: EXAMPLE

PROC SQL NOPRINT;
/*전체 INCOME의 평균을 MEAN1에 저장*/
SELECT
AVG(INCOME) INTO :MEAN1 FROM EXAMPLE;
/*SHOP 별 INCOME의 평균을 각각 SHOP1~SHOP3에 저장*/
SELECT AVG(INCOME) INTO :SHOP1-:SHOP3 FROM EXAMPLE GROUP BY SHOP;
QUIT;

%PUT &MEAN1 &SHOP1 &SHOP2 &SHOP3;

결과


SAS에서 매크로는 업무 효율화를 위해 꼭 알아두어야하는 내용이다.

 

꼭 복잡한 매크로를 사용하지 않더라도, 몇가지 매크로 변수를 선언하는 것만으로도 많은 도움이되므로

오늘 포스팅이 많은 사람들에게 도움이 되었으면!

728x90