포스팅 목차
o SYMGET
데이터 스텝 실행동안 macro변수의 값을 반환한다.
Category: | Macro |
문 법
SYMGET (argument) |
Arguments
argument
는 문자표현.
관련 함수
함수명 | 함수내용 |
CALL EXECUTE | 데이터 스텝안에서 매크로 인수를 분석하고,매크로를 실행을 위하여 분석된 값을 발행(실행)한다. |
CALL SYMPUT | 데이터 스텝 정보를 매크로 변수에 할당한다. |
CALL SYMPUTX | RAND 함수에 의해 생성되는 random number generation에 이용되는 seed 값을 지정한다. |
RESOLVE | 매크로 기능(facility)으로 할당되었던 한 개 이상의 값을 데이터 스텝의 값으로 반환한다. |
SYMEXIST | macro 변수의 존재 유무를 확인 후 반환한다. |
SYMGET | 데이터 스텝을 실행하는 동안에 macro변수의 값을 반환한다. |
SYMGLOBL | 데이터 스텝 실행동안 global scope(전역범위)안에 macro변수의 존재성 여부 반환한다. |
SYMLOCAL | 데이터 스텝 실행동안 local scope(지역범위)안에 macro변수의 존재성 여부 반환한다. 즉, 지역 변수의 존재성 여부를 반환한다. |
예 제
proc means를 통하여 전체 합과 dept 그룹간 합을 구한후에, call symput을 사용하여서 총합의 경우 매크로 변수 s_sal에 할당하고, 그룹 합의 경우 s+그룹명에 할당을 한다.
그 후에 symget함수를 이용하여서 각 값을 그룹의 합으로 나누어서 pctdept 변수를 생성하고, 총합으로 나누어서 pcttot변수를 생성한다.
SAS Statements |
data dusty;
input dept $ name $ salary @@;
cards;
bedding Watlee 18000
bedding Ives 16000bedding Parker 9000
bedding George 8000bedding Joiner 8000
carpet Keller 20000carpet Ray 12000
carpet Jones 9000
gifts Johnston 8000
gifts Matthew 19000kitchen White 8000
kitchen Banks 14000kitchen Marks 9000
kitchen Cannon 15000tv Jones 9000
tv Smith 8000tv Rogers 15000
tv Morse 16000
;
proc means noprint;
class dept;
var salary;
output out=stats sum=s_sal;
run;
data _null_;
set stats;
if _n_=1 then call symput('s_tot',s_sal);
else call symput('s'||dept,s_sal);
run;
%put &s_tot;
%put &sbedding;
%put &scarpet;
%put &sgifts;
%put &skitchen;
%put &stv;
data new;
set dusty;
pctdept = (salary/symget('s'||dept))*100;
pcttot = (salary/&s_tot)*100;
run;
Results |
180 %put &s_tot; 221000
181 %put &sbedding; 59000
182 %put &s_tot; 221000
183 %put &sbedding; 59000
184 %put &scarpet; 41000
185 %put &sgifts; 27000
186 %put &skitchen; 46000
187 %put &stv; 48000
* new 데이터
dept name salary pctdept pcttot
bedding Watlee 18000 30.5085 8.14480
bedding Ives 16000 27.1186 7.23982
bedding Parker 9000 15.2542 4.07240
bedding George 8000 13.5593 3.61991
bedding Joiner 8000 13.5593 3.61991
carpet Keller 20000 48.7805 9.04977
carpet Ray 12000 29.2683 5.42986
carpet Jones 9000 21.9512 4.07240
gifts Johnston 8000 29.6296 3.61991
gifts Matthew 19000 70.3704 8.59729
kitchen White 8000 17.3913 3.61991
kitchen Banks 14000 30.4348 6.33484
kitchen Marks 9000 19.5652 4.07240
kitchen Cannon 15000 32.6087 6.78733
tv Jones 9000 18.7500 4.07240
tv Smith 8000 16.6667 3.61991
tv Rogers 15000 31.2500 6.78733
tv Morse 16000 33.3333 7.23982
SAS 함수(SAS Function) 리스트 링크 |
엑셀(EXCEL)과 SAS 함수(SAS Function) 비교 리스트 링크 |
SAS 데이터 스텝 구문 리스트(SAS Data Step Statement) |
반응형
'SAS > SAS 함수' 카테고리의 다른 글
【SAS 함수】 393. SYMLOCAL (0) | 2021.10.12 |
---|---|
【SAS 함수】 392. SYMGLOBL (0) | 2021.10.12 |
【SAS 함수】 390. SYMEXIST (0) | 2021.10.11 |
【SAS 함수】 389. SUM (0) | 2021.10.11 |
【SAS 함수】 388. SUBSTRN (0) | 2021.10.11 |
댓글