본문 바로가기
SAS/SAS 함수

【SAS 함수】 68. CALL SET

by 기서무나구물 2018. 11. 24.

포스팅 목차

    68. CALL SET

     


    SAS 데이터 세트 변수를 같은 이름이나 타입을 가진 DATA STEP 이나 Macro변수와 연결한다.

    Category: 변수제어함수 (Variable Control)

     


    MAIN

    문 법


    CALL SET
     (data-set-id);

     

    Arguments

    data-set-id

     

         는 Data set이 Open되었을때 OPEN함수에 할당된 인식자.

    참 고

    GETVARC, GETVARN 함수와 유사

     


    관련 함수

    함수명 함수내용
    CALL LABEL 지정한 문자 변수에 대해 변수 라벨을 반환받는다.
    CALL SET SAS 데이터 세트 변수를 같은 이름이나 타입을 가진 DATA STEP 이나 Macro변수와 연결한다.
    CALL VNAME 지정한 변수값으로써 변수 이름들을 관측치로 할당한다.
    FETCH SAS 데이터 세트로부터 현재 관측치 다음의 관측치를 데이터 세트 데이터 벡터(DDV) 안으로 관측치를 읽는다.
    FETCHOBS SAS 데이터 세트로부터 지정한 관측치를 데이터 SET 데이터 벡터(DDV)로 읽는다.
    GETVARC SAS데이터 세트에서 문자변수의 값을 반환한다.
    GETVARN SAS데이터 세트에서 숫자변수의 값을 반환한다.
    VNAME 지정된 변수의 이름을 반환한다.
    VNAMEX 변수 이름으로써 지정된 인수의 값을 반환한다.

     


    예 제

    예 제 1 :

    sasuser.houses 데이터를 OPEN한 후에 call set함수를 이용하여서 할당한 변수와

    테이터를 연결하여 복사한다. (call set (dsid);을 삭제후 실행하여 비교)

    SAS Statements Results
    data mydata;
         * CALL SET에 의해 할당에 대한 변수 생성;
         length style $8 sqfeet bedrooms 
         baths 8 street $16 price 8;
         style = ''; sqfeet = '';
         bedrooms = ''; baths = 0;
         street = ''; price = 0;
         drop rc dsid;
         dsid = open("sasuser.houses","i");
         * sasuser.houses(PDV)와 연결;
         call set (dsid);
         put dsid=;
         do i=1 to 10;
            rc=fetchobs(dsid,i);
            output;
         end;
    run;
     
     
     
    sasuser.houses에서 10개 데이터를 복사
    %macro setvar;
      %let dsid=%sysfunc(open(sasuser.houses,i));
      %syscall set(dsid); 
      %let rc=%sysfunc(fetchobs(&dsid,10));
      %let rc=%sysfunc(close(&dsid));
    %mend setvar;

    %global price style;
    %setvar
    %put _global_;
    GLOBAL STYLE CONDO
    GLOBAL PRICE $127,150

     


    예 제 2 :

    sasuser.class에서 fetchobs함수를 이용하여서 첫 번째 관측치의 name과 sex변수 값을 가져오고,

    4번째 변수(height)값을 가져온다. name과 sex의 경우에는 getvarn을 사용하지 않고,

    Call set에 의해 데이터를 가져올수 있다.

    SAS Statements Results
    data _null_;
         retain name ' ';
         retain sex ' ';
         rc=open('sasuser.class');
         call set(rc);
         rc1 = fetchobs(rc,1);
         rc2 = sysmsg();
         rc3 = curobs(rc);
         hei = getvarn(rc,4);
         rc4 = close(rc);
         put name= sex= hei= rc= rc1= 
         rc2= rc3= rc4=;
    run;
     
     
     
    name=Alfred sex=M hei=69 rc=1 rc1=10005 rc2=ERROR: ERROR: DATA step variable Age not defined.. 
    rc3=1 rc4=0
    %let name =;
    %let sex =;
    %let rc = %sysfunc(open(sasuser.class));
    %syscall set(rc);
    %let rc1 = %sysfunc(fetchobs(&rc,1));
    %let rc2 = %sysfunc(sysmsg());
    %let rc3 = %sysfunc(curobs(&rc));
    %let hei = %sysfunc(getvarn(&rc,4));
    %let rc4 = %sysfunc(close(&rc));
    %put &name &sex &hei &rc 
    &rc1 &rc2 &rc3 &rc4;
      
    Alfred M 69 1 0 1 0

     


    예 제 3 :

    sashelp.class의 데이터 값을 Call set 함수를 이용하여 복사한다. 

    SAS Statements
    data _null_;
         if 0 then set sashelp.class; * prep data set PDV;
         length age 8;
         ds = open ("sashelp.class");
         call set (ds);
         do rc = fetch(ds) by 0 while (rc = 0);
            put _all_ ;
            rc = fetch(ds);
         end;
    
         if rc ne %sysrc (_SWEOF) then do;
            msg = sysmsg();
            put _all_ ;
         end;
         stop;
    run;

     

    Results
    Name=Alfred Sex=M Age=14 Height=69 Weight=112.5 ds=1 rc=0 msg= _ERROR_=0 _N_=1
    Name=Alice Sex=F Age=13 Height=56.5 Weight=84 ds=1 rc=0 msg= _ERROR_=0 _N_=1
    Name=Barbara Sex=F Age=13 Height=65.3 Weight=98 ds=1 rc=0 msg= _ERROR_=0 _N_=1
    Name=Carol Sex=F Age=14 Height=62.8 Weight=102.5 ds=1 rc=0 msg= _ERROR_=0 _N_=1
    --------------------------- 생 략 ---------------------------------------
    Name=Robert Sex=M Age=12 Height=64.8 Weight=128 ds=1 rc=0 msg= _ERROR_=0 _N_=1
    Name=Ronald Sex=M Age=15 Height=67 Weight=133 ds=1 rc=0 msg= _ERROR_=0 _N_=1
    Name=Thomas Sex=M Age=11 Height=57.5 Weight=85 ds=1 rc=0 msg= _ERROR_=0 _N_=1
    Name=William Sex=M Age=15 Height=66.5 Weight=112 ds=1 rc=0 msg= _ERROR_=0 _N_=1

     


    SAS 함수(SAS Function) 리스트 링크

     

    엑셀(EXCEL)과 SAS 함수(SAS Function) 비교 리스트 링크

     

    SAS 데이터 스텝 구문 리스트(SAS Data Step Statement)
    반응형

    'SAS > SAS 함수' 카테고리의 다른 글

    [SAS 함수] 70. CALL SOFTMAX 함수  (0) 2018.11.24
    [SAS 함수] 69. CALL SLEEP 함수  (0) 2018.11.24
    【SAS 함수】 67. CALL SCANQ 함수  (0) 2018.11.24
    【SAS 함수】 66. CALL SCAN 함수  (0) 2018.11.24
    【SAS 함수】 65. CALL RXSUBSTR  (0) 2018.11.24

    댓글