BookmarkSubscribeRSS Feed

SAS Macro - ② %STR

Started ‎10-29-2025 by
Modified ‎10-29-2025 by
Views 109

%STR

특수문자나 공백을 다룰 때 사용하는 매크로입니다.

STR은 String의 약자로 매크로 프로세사가 특수문자가 명령어가 아닌 일반 텍스트로 처리하도록 만든 함수입니다.

이전 게시글 외에 다양한 %STR 활용방법에 대해서 알아보겠습니다.

■ 조건문을 MACRO 에 삽입

특수문자가 포함된 값을 일반 텍스트로 처리하는 것 외에도 분석 조건이 자주 바뀌거나 여러 데이터셋걸쳐 동일한 조건식을 적용해야 할 때, 조건식을 직접 하드 코딩하는 대신 매크로 변수로 관리 수 있습니다.

 

 

%LET condition = %STR(air >= 150 and air <= 170);

DATA test;
    SET sashelp.air;
    WHERE &condition;
RUN;

%PUT 적용된 조건: &condition;

 

기본 비교 연산자 (=, >, <, >=, <=) 와 논리 연산자 (AND, OR)는 조건식에 세미콜론(;) 등의 특수 문자가 포함될 경우를 대비하여 %STR을 사용하여 조건식으로 인식합니다.

 

 

 

image.png

 

 

■ 수식을 텍스트로 인식하기

 

%LET formula = %STR(length_new = length1 - length2 +length3);
%PUT 수식: &formula;

DATA work.summary;
    SET sashelp.fish;
    &formula;
RUN;

 

 

매크로 변수를 활용해서 수식을 저장(formula)합니다.

%STR을 활용해서 등호(=)와 연산자(-,+)를 일반 텍스트로 처리합니다.

work.summary 라는 새로운 데이터셋을 생성합니다.

SASHELP의 내장 데이터셋 FISH 를 읽어 새로운 변수 length_new라는 새로운 칼럼을 생성합니다.

 

 

image.png

 

 

 

■ SQL 조건문을 텍스트로 인식

매크로 변수를 활용하여 PROC SQL 문의WHERE 절을 동적으로 생성하고 실행합니다.

 

%LET sql_where = %STR(species = 'Bream' AND weight > 700);
%PUT SQL 조건: &sql_where;

proc sql;
create table newfish_data as
select * 
from sashelp.fish
where &sql_where;
quit;

 

%STR을 활용해서 따옴표(') , 등호(=), 논리 연산자(AND, OR) 등이 일반 텍스트로 인식합니다.

WHERE 절에 species = 'Bream' AND weight > 700 대신에 %STR로 설정한 조건문(sql_where)을 실행합니다.

 

 

image.png

Contributors
Version history
Last update:
‎10-29-2025 02:41 AM
Updated by:

sas-innovate-2026-white.png



April 27 – 30 | Gaylord Texan | Grapevine, Texas

Registration is open

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 lock in 2025 pricing—just $495!

Register now

Article Labels
Article Tags