오늘은 업무를 진행할 때 유용한 몇가지 매크로 변수 활용법에 대해 포스팅하고자한다.
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문을 사용하면 매크로 변수가 가지고 있는 값을 로그창에 출력해준다.
매크로 변수 디버깅 시, 유용하게 사용할 수 있다.
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의 여러가지 용법과 결합하여 한번에 여러개의 매크로 변수를 선언 할 수도 있다.
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에서 매크로는 업무 효율화를 위해 꼭 알아두어야하는 내용이다.
꼭 복잡한 매크로를 사용하지 않더라도, 몇가지 매크로 변수를 선언하는 것만으로도 많은 도움이되므로
오늘 포스팅이 많은 사람들에게 도움이 되었으면!
'Programming > SAS' 카테고리의 다른 글
[SAS] PDV(Program Data Vector)의 이해 (0) | 2025.02.01 |
---|---|
[SAS] PROC SGPLOT으로 시작하는 데이터 시각화_초급 (0) | 2025.01.27 |
[SAS 기초] Array를 통한 데이터 처리 (1) | 2024.12.14 |
[SAS 자격증] SAS Advanced Programming 시험 합격자 후기 인터뷰 (0) | 2023.07.02 |
SAS Base Programming certification 후기 (8) | 2023.06.15 |
댓글