이번 게시글에서는 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 키워드 매개변수는 기본값으로 유지됩니다.
Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.