이번 게시글에서는 SAS 코드를 반복적으로 실행하기 위해 매크로 프로그램을 생성하는 방법에 대해 알아봅니다.
매크로 프로그램은 SAS DATA 또는 PROC 단계를 통해서 코드를 반복적으로 실행할 수 있습니다.
아래 예시는 R에서 매크로 프로그램을 만들고 하나의 매개 변수로 전달합니다.
정규 분포에서의 관측치의 수입니다. 그런 다음 해당 데이터 세트를 사용하여 보고서를 생성합니다.
이 모든 것을 하나의 프로그램 안에서 생성할 수 있습니다.
이제 R 함수를 한 번 입력하면 함수를 사용하여 원하는 매개 변수를 전달할 수 있습니다.
매크로 기능은 다음과 같은 특징이 있습니다.
실제로 매크로를 만드는 아래와 같습니다.
아래과 같이 %MACRO를 사용하여 시작하고 %MEND를 사용하여 종료합니다.
%MACRO macro-name;
macro-text
%MEND <macro-name>;
%MACRO문을 사용하여 지정합니다. %MACRO ~ %MEND가 프로그래밍 문이 됩니다.
%macro today;
%put Today is &sysday &sysdate9;
%mend;
이 프로그램에서 우리는 %put을 가지고 있습니다. %put은 로그에 메시지를 씁니다.
매크로가 컴파일된 후 매크로는 sasmacr이라는 이름으로 Work 라이브러리에 저장됩니다. 매크로를 호출하려면 변수를 사용하면 다음 구문과 같이 매크로 이름에 백분율 기호를 붙이기만 하면 됩니다.
%macro-name
위에서 생성한 today 매크로를 호출하기 위해서는 아래와 같이 호출할 수 있습니다.
%today
매크로 내에서 %PUT 문을 실행할 것입니다. 따라서 그것은 생성 오늘 날짜 메시지를 기록합니다.
매크로 호출은 코드의 모든 위치에 나타날 수 있습니다. DATA 또는 PROC 단계에 있을 필요는 없습니다.
매크로 프로세서에 전달되어 매크로 내부의 명령문을 실행할 수 있습니다.
매크로를 호출한 후에는 세미콜론을 사용할 필요가 없습니다.
매개변수 목록은 매크로 내에서 참조되는 매크로 변수 목록입니다.
매개변수 목록에는 세 가지 유형이 있습니다.
1. positional – 해당 매개 변수 이름과 동일한 순서로 표시되어야 합니다.
2. 키워드 – 등호 뒤에 기본값 할당
3. 혼합 – 위치 매개 변수와 키워드 매개 변수가 모두 있습니다.
R에서와 마찬가지로 매개변수 목록을 매크로에 전달하여 프로그램을 더욱 맞춤화할 수 있습니다.
그리고 R에서와 마찬가지로, 위치 키워드 또는 이러한 매개변수 목록을 혼합하여 사용할 수 있습니다.
R에서는 매개변수의 정확한 이름을 모를 수 있습니다.
%macro calc(dsn,vars);
proc means data=&dsn;
var &vars;
run;
%mend calc;
%calc(business,yield)
위의 예시는 calc라는 매크로를 만들고 있습니다.
두 가지 위치 매개변수가 있습니다. 데이터 세트 이름의 DSN은 쉼표로 구분되고 var는 VAR 문에 넣을 변수입니다.
매개변수를 전달할 때 매크로 변수인 것처럼 전달합니다.
우리는 MEANS 절차에서 DSN 및 vars에 앰퍼샌드를 고정하고 있습니다.
%calc를 사용하여 매크로를 호출할 때 단순히 데이터 세트 이름(이 경우 비즈니스)과 변수(이 경우에는 yield)를 나열합니다.
매개변수 값은 해당 매개변수 이름과 동일한 순서로 나타나야 합니다. 따라서 %calc(비즈니스)의 매크로 호출에서 첫 번째 인수는 매크로 정의의 첫 번째 매개변수(이 경우 DSN)와 일치해야 합니다.
yield 변수는 vars에 해당해야 합니다.
%macro count(opts=,start=01jan08,stop=31dec08);
proc freq data=orion.orders;
where order_date between
"&start" and "&stop";
table order_type / &opts;
title1 "Orders from &start to &stop";
run;
%mend count;
키워드 매개변수에는 등호 뒤에 기본값이 할당됩니다. 위의 예시에서는 FREQ 프로시저인 count라는 매크로 프로그램을 만들고 있습니다.
세 가지 키워드 매개 변수가 있습니다. 옵션은 null 값과 같으며 시작은 다음과 같습니다.
2008년 1월 1일, 그리고 2008년 12월 31일과 동일하게 정지합니다. FREQ 절차에서, 그 날짜들을 사용합니다. 조건을 제공할 WHERE 문과 슬래시(/)를 사용하여 TABLE 문에서 옵션을 사용합니다.
키워드 매개 변수로 사용됩니다. 따라서 세 가지 모수 모두 기본값이 있습니다.
혼합 매개변수 목록에는 위치 매개변수와 키워드 매개변수가 모두 있습니다.
매크로 정의에서 위치 매개변수를 먼저 나열한 다음 키워드 매개변수를 나열합니다.
%macro count(opts,start=01jan08,stop=31dec08); 1.
proc freq data=orion.orders;
where order_date between
"&start" and "&stop";
table order_type / &opts;
title1 "Orders from &start to &stop";
run;
%mend count;
options mprint;
%count(nocum) 2.
%count(stop=30jun08,start=01apr08) 3.
%count(nocum nopercent,stop=30jun08) 4.
%count() 5.
위의 예제에서는 매크로 호출에 대해서 값은 true를 가집니다.
1. %MACRO 문에서 opts는 positional 매개변수입니다. start와 stop은 키워드 매개변수로 남겨둡니다.
2. %count의 첫 번째 매크로 호출에서 우리는 위치 매개변수 opts를 nocum으로만 변경하고 있습니다. 시작하고 stop 키워드 매개변수는 기본값이 됩니다.
3. 두 번째 매크로 호출에서 stop 및 start 키워드 매개변수를 두 개의 다른 날짜로 변경합니다.
위치 매개변수 opts에 대해 아무 것도 지정하지 않았습니다. 우리가 변경하지 않으면 위치 매개변수, 기본값은 null 값입니다.
4. 세 번째 매크로 호출에서 opts 위치 매개변수와 stop 키워드를 모두 변경했습니다.
매개변수. 이것은 중요하다. 위치 매개변수가 먼저 와야 합니다. 그래서 우리는 선택을 변경해야합니다
nocum 및 nopercent를 입력한 다음 키워드 매개변수를 변경할 수 있습니다. 이 경우에는 stop입니다.
5. 최종 매크로 호출에서 null 값으로 실행합니다. opts는 기본적으로 null 값을 사용합니다. 그리고 둘 다 stop 키워드 매개변수는 기본값으로 유지됩니다.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and save with the early bird rate—just $795!