본문 바로가기
SAS/SAS 함수

【SAS 함수】 391. SYMGET

by 기서무나구물 2021. 10. 11.

포스팅 목차

    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

    댓글