macro 14

SAS MACRO - SYMGET vs. CALL SYMPUT

SYMPUT 과 CALL SYMPUT 은 DATA STEP 에서 다루는 매크로 함수이다. 둘의 차이를 이해를 잘 못하는 사람들이 많다.둘다 DATA STEP 과정에서 매크로 변수를 생성하는 공통점이 있지만, SYMPUT 은 매크로 변수에 지정되어있는 값을 참조하여 다시부르는 기능이고, CALL SYMPUT 은 DATA STEP 의 결과를 매크로 변수에 할당하게 된다. DATA STEP 이 실행되는 동안 매크로 변수에 할당되는 값이 변동이 있을 수 있고, 실제 사용하는데 있어서도 SYMGET 보다는 CALL SYMPUT 가 유연하고 더 자주 사용된다. 아래 예제는 CALL SYMPUT을 이용하여 값들을 이용하여 매크로변수를 만들어 저장하였고, 그것을 다시 SYMGET 을 이용하여 매크로 값을 참조하였다. ..

SAS Macro 2025.05.25

SAS Macro 인용함수 %BQUOTE, %NRBQUOTE

%BQUOTE (문자열 | 문자식)%NRBQUOTE(문자열 | 문자식) 문자열이나 문자식에 포함되어 있는 특수문자를 문자로만 받아들인다. 이에 해당되는 특수 문자들은,' " ( ) + - * / = ^ ~ ; , blankAND OR NOT EQ NE LE LT GE GT %NRBQUOTE 은 여기에 ‘&’ 과 ‘%’ 이 포함된다. [Example] 변수인용부호 %macro fileit(infile); %if %bquote(&infile) NE %then %do; %let char1 = %bquote(%substr(&infile,1,1)); -- 1) %if %bquote(&char1) = %str(%’) ---------------- 2) ..

SAS Macro 2025.05.25

SAS Macro 매크로 인용함수 %STR, %NRSTR

인용 함수는 매크로에서 기능을 갖는 특수문자의 기능을 상실하게 함으로서 문자 그대로 받아들이도록 한다 %STR (문자열 | 문자식)%NRSTR(문자열 | 문자식) 문자열이나 문자식에 포함되어 있는 특수문자를 문자로만 받아들인다. 이에 해당되는 특수 문자들은, ' " ( ) + - * / = ^ ~ ; , blankAND OR NOT EQ NE LE LT GE GT %NRSTR 은 여기에 ‘&’ 과 ‘%’ 이 포함된다. 즉, & 나 % 의 기능을 살릴 경우 (실행됨) %STR 만 사용하고, 기능을 버리고 문자로만 인식하고자 할 경우 %NRSTR 를 사용하면 된다. [Example] 유의한 빈칸%let time=%str( now);%put Text followed by the value of tim..

SAS Macro 2025.05.25

SAS Macro 매크로 변수값 출력 %PUT

%PUT 매크로변수이름; %PUT 명은 매크로 프로세서가 SAS log 창에 정보를 기록하도록 지시한다. 문자와 매크로 변수값들은 %PUT 과 함께 출력될 수 있다. %PUT 매크로 언어명령문이므로 data step 이나 프로시저의 일부가 될 필요는 없다. %put _user_; 매크로 변수들의 리스트가 로그 창에 프린트%put _automatic_; 모든 자동 매크로 변수들의 값을 목록으로 만듬%put _all_; 모든 자동 매크로 변수와 사용자 정의 매크로 변수들을 목록으로 만든다. %PUT 명령문에 더해진 문자는 더 읽기 쉽고 유익한 결과를 가져다 준다. %let reptitle=Book Section;%let reptvar=section;%put My macro variable R..

SAS Macro 2025.05.25

SAS Macro Data step 에서 사용하는 매크로변수 CALL SYMPUT

CALL SYMPUT(‘매크로변수’, 매크로변수에 할당되는 값); Data step 이 실행되는 동안 생성된 결과를 지정된 매크로 변수에 할당하는 기능이다. 이미 존재하는 매크로 변수를 이용할 수도 있고, SYMPUT 함수를 이용하여 새로운 매크로변수를 만들 수도 있는데, 반드시 CALL 문과 함께 사용하여야 하고 매크로 변수는 인용부호 지정하여야 한다. 간단한 예로, call symput('new','testing’); 은 ‘testing’ 이라는 문자열을 변수 NEW에 넣으라는 명령어가 된다. data team1; input position : $8. player : $12.; call symput(position,player); cards;shortstp Annpitcher Tom..

SAS Macro 2025.05.25

SAS Macro Data step 에서 사용하는 매크로 변수 SYMGET

SYMGETDATA step이 실행되는 동안 매크로 변수의 값을 DATA step 에서 이용하게끔 매크로 값을 호출하는 기능으로 예를들어, x = symget('g’); 는 매크로 변수 G 에 들어있는 값을 data step 에서 변수 X 로 보낸다. 또 다른 예로, score = symget(‘s’||left(_n_)); 연결 연산자 (||) 와 같이 사용하여 data step 변수인 _N_ 을 연결하여 일련의 변수들을 표현할 수 있다. data dusty; input dept $ name $ salary @@; cards;bedding Watlee 18000 bedding Ives 16000bedding Parker 9000 bedding George 800..

SAS Macro 2025.05.25

SAS Macro 매크로 함수 %UPCASE, %LOWCASE

%UPCASE(문자식) 대문자로 문자식이 생성%LOWCASE(문자식) 소문자로 문자식이 생성 자료 수집자가 여러명일 경우에는 이름(성), 지역 등 open question 의 기입 방식은 다양해질 수 있다. 이러한 경우에 자료 정리는 동일하게 처리되도록 프로그램해야 하는데, 그 중 하나가 대문자, 소문자를 통일시켜 인식하도록 하는 함수이다. 수집된 자료에서 조건식을 이용하여 필터하게 되는 경우 주로 사용한다.

SAS Macro 2025.05.25

SAS Macro 매크로 함수 %SUBSTR, %QSUBSTR

%SUBSTR (변수, 위치길이>) %QSUBSTR (변수, 위치길이>) 변수 문자열의 일부만 추출할 때 사용되는 함수로, 가볍게 다음과 같이 보고서 생성 일자를 제목으로 하고자 할 때 다음과 같이 사용할 수 있다. TITLE “Report for %SUBSTR(&SYSDAY, 1,3), &SYSDATE” ; %let a=one;%let b=two;%let c=%nrstr(&a &b);%put C: &c;%put With SUBSTR: %substr(&c,1,2); ------ (1)%put With QSUBSTR: %qsubstr(&c,1,2);--- (2) (1) %SUBSTR 에서는 C에 해당하는 문자열에서 처음부터 2자리 해당되는 문자추출, 매크로 변수로 인식하여 매크로 변수에 해당되는 ..

SAS Macro 2025.05.25

SAS Macro 매크로 함수 %SCAN, %QSCAN

%SCAN(변수, n구분자>) %QSCAN(변수, n구분자>) 두 매크로 함수는 문자열의 특정위치를 지정하여 문자를 찾는 기능을 하는데, 다음 예제를 통해서 두 함수의 차이를 살펴보면 이해가 쉽다. %macro a; aaaaaa%mend a;%macro b; bbbbbb%mend b;%macro c; cccccc%mend c;%let x=%nrstr(%a*%b*%c); %put X: &x; %put The third word in X, with SCAN: %scan(&x,3,*); ----(1) %put The third word in X, with QSCAN: %qscan(&x,3,*); ----(2) (1) %SCAN 은 구분자(*..

SAS Macro 2025.05.25

SAS Macro 매크로 함수 %LENGTH

%LENGTH 매크로 변수가 몇 개 글자로 이루어졌는지 나타내는 함수이다. %let a=Happy;%let b=Birthday;%put The length of &a is %length(&a).;%put The length of &b is %length(&b).;%put The length of &a &b To You is %length(&a &b to you).;문자길이를 계산할 때에는 공란이 포함되어 계산되고, 문자열이 없다면 0 으로 출력된다. %LENGTH 함수는 많이 사용되는 함수는 아니나, 변수의 문자열이 길고, 공백이 있을 경우에 자료 입력 시, 입력하는 사람이나 설문지에 기입된 사항에 따라 같은 문장이나 문구가 다르게 인식될 수 있다. 이럴 경우 %LENGTH 를 이용하여 문자열길이로..

SAS Macro 2025.05.25