본문 바로가기
SAS/SAS 구문사전

【SAS Statement】 DATA 구문

by 기서무나구물 2022. 1. 25.

포스팅 목차

    o DATA 구문

     


    1. 목 적 

       DATA 구문은 DATA 스텝 시작의 선언 및 출력 SAS DATA 세트의 이름을 설정하고, 또한 데이터 뷰(View)의 이름도 지정할 수 있다.

     


    2. 문 법 

    DATA   <... data-set-name-1 <(data-set-options-1)>>
       <... data-set-name-n <(data-set-options-n)>>   
       </ <DEBUG> <NESTING> <STACK = stack-size>> <NOLIST>;  

    DATA _NULL_ </ <DEBUG> <NESTING> <STACK = stack-size>> <NOLIST>  ; 

    DATA view-name  <data-set-name-1 <(data-set-options-1)>>  
       <... data-set-name-n <(data-set-options-n)>> / 
       VIEW=view-name <(password-option><SOURCE=source-option>)> 
       <NESTING> <NOLIST> ;  

    DATA data-set-name / PGM=program-name
       <(password-option><SOURCE=source-option>)> 
       <NESTING> <NOLIST> ; 

    DATA VIEW=view-name <(password-option)> <NOLIST>; 
       DESCRIBE;  

    DATA PGM=program-name <(password-option)> <NOLIST>;  
       <DESCRIBE;>
       <REDIRECT INPUT | OUTPUT old-name-1 = new-name=1
       <... old-name-n = new-name-n>;>
       <EXECUTE;>

     

        인수를 지정하지 않으면, DATA 스텝은 연속적으로 생성되는 데이터세트 이름을 DATAn 형식으로 자동으로 지정한다. (n은 정수값)

     

    1) Data-set-name

       DATA 스텝이 생성하는 SAS 데이터 파일 또는 DATA 스텝 뷰의 이름을 지정한다. DATA 스텝 뷰를 생성하기 위해서는 적어도 하나의 data-set-name을 지정해야 하고, 그 data-set-name은 view-name과 일치해야 한다. 데이터 세트 이름으로 파일이 저장될 위치의 실제 경로와 SAS 파일 이름(SAS 확장자 포함)을 직접 지정할 수 있다.

    DATA 'C:\WORK\TEST.sas7bdat';
     SET SASHELP.CLASS;
    RUN;

     

    제한사항 : data-set-name SAS 이름 규칙을 따라야 하고, 운영 환경에 따라서 추가적인 제한이 적용 있다.
    Tip : SAS 데이터 세트를 생성 하지 않고 DATA 스텝을 실행 있다.
    관련사항 : SAS 데이터 세트 이름의 유형에 대한 세부 사항과 개별 유형을 사용하는 경우에는, “Name in the SAS Language” 참조

     

    2) (data-set-options)

       출력 데이터 세트에 관측치를 작성하는 경우에 DATA 스텝이 적용하는 옵션을 지정하라. 주로 사용되는 옵션으로는 KEEP=, DROP=, RENAME=, OBS=, FIRSTOBS= 등이 있다.

     

    3) /DEBUG 

       대화식 프로그램 방식으로 디버깅 작업을 통하여 로직 에러와 데이터 에러를 확인할 수 있다.

     

    4) /NESTING

       DO-END 구문과 SELECT-END 구문을 여러 단계로 중첩하여 작성한 경우에 개별 단계의 시작과 끝을 알려주는 메시지를 SAS log에 출력한다. 이 옵션을 사용하여 일치하지 않는 DO-END 구문과 SELECT-END 구문을 디버깅할 수 있으며, 반복 구문을 여러 단계로 중첩하여 복잡하게 작성한 경우에 유용하다.

     

    5) /STACK=stack-size

       중첩하여 작성 가능한 LINK 구문의 최대 개수를 지정한다.

     

    6) _NULL_

       DATA 스텝을 실행할 때 출력 데이터 세트가 생성하지 되지 않도록 지정한다. 이 경우 추가적인 작업 결과를 LOG를 통하여 확인한다.

     

    7) VIEW=view-name

       입력 DATA 스텝 뷰 테이블(VIEW)을 저장하기 위하여 DATA 스텝이 사용하는 뷰(VIEW)의 이름을 정의한다. 하나의 DATA 스텝에는 하나의 뷰 테이블(VIEW)만 생성이 가능하다. 이 때문에 DATA 구문에 다수의 데이터 세트 이름을 지정한 경우에 view-name은 이 중에 하나와 동일하게 작성하여 사용해야 한다.

     

    제한사항 : view-name DATA 구문에 존재하는 여러 데이터 세트 이름 중에 하나와 일치해야 한다.
    제한사항 : 하나의 DATA 스텝에서 하나의 뷰만 생성한다.
    Tip : 만약 DATA 구문에 (VIEW) 생성하는 데이터 세트 이외의 추가 데이터 세트를 함께 지정하였으면, 이후의 DATA 스텝 또는 PROC 스텝에서 (VIEW) 사용되는 경우에 SAS 추가로 지정된 데이터 세트를 생성한다.
    Tip : SAS 매크로 변수는 뷰가 생성되는 경우에 바로 처리 것이다. 뷰가 사용되기 전까지 매크로 변수의 처리를 연기하기 위하여 SYMGET 함수를 사용하라. XE "SYMGET 함수:DATA 구문"
    주요기능 : 예제2 : 데이터 스텝 VIEW 생성

    예제3 : VIEW 데이터 파일 동시에 생성하기

     


    8) Password-option

       컴파일되어 저장된(Stored compiled) 데이터 스텝 프로그램 또는 데이터 스텝 뷰에 접근 암호를 설정한다. 다음은 단계별로 해당하는 암호를 지정하는 옵션이다.

     

    (1) ALTER=alter-password

       SAS 데이터 파일에 수정(alter) 암호를 설정한다. 이 암호는 컴파일 되어 저장된 데이터 스텝 프로그램 또는 데이터 스텝 뷰(view)를 보호하고 수정하는 작업을 관리한다. 

    필요사항 : 컴파일 되어 저장된 데이터 스텝 프로그램 또는 DATA 스텝 뷰를 생성 때에 ALTER 암호를 지정했으면, 프로그램이나 뷰를 수정하기 위해서는 ALTER 암호를 사용해야 한다.
    필요사항 : 컴파일 되어 저장된 데이터 스텝 프로그램 또는 데이터 스텝 뷰를 생성 때에 ALTER 암호를 지정했으면, DESCRIBE 구문을 실행하기 위해서는 ALTER 암호가 필요하다. XE "DESCRIBE 구문:DATA 구문"
    별칭 : PROTECT=

     

    (2) READ=read-password

       SAS 데이터 파일에 읽기(read) 암호를 설정한다. 이 암호는 컴파일 되어 저장된 데이터 스텝 프로그램 또는 DATA 스텝 뷰를 읽거나 실행하는 작업을 관리한다. 

    필요사항 : 컴파일 되어 저장된 데이터 스텝 프로그램 또는 DATA 스텝 뷰를 생성 때에 READ 암호를 지정했으면, 프로그램이나 뷰를 읽기 위해서는 READ 암호가 필요하다.
    필요사항 : 컴파일 되어 저장된 데이터 스텝 프로그램 또는 DATA 스텝 뷰를 생성 때에 READ 암호를 지정했으면, DESCRIBE 구문과 EXECUTE 구문을 실행하기 위하여 READ 암호를 사용해야 한다. 유효하지 않은 암호를 사용하면, DESCRIBE 구문만을 실행 것이다.
    Tip : 컴파일 되어 저장된 데이터 스텝 프로그램 또는 DATA 스텝 뷰를 생성 때에 READ 암호를 지정했으면, 프로그램이나 뷰를 수정하기 위해서 암호가 필요하지 않다.
    별칭 EXECUTE=

     

    (3) PW=password

       읽기(READ)와 수정(ALTER) 암호를 동일한 암호로 설정한다.

     


    9) SOURCE=source-option

       다음 소스 옵션 중에서 하나를 지정한다.

     

    (1) SAVE

       컴파일 되어 저장된 데이터 스텝 프로그램 또는 DATA 스텝 뷰를 생성하는 소스 코드를 저장한다.

     

    (2) ENCRYPT

       소스 코드를 암호화하여 저장한다.

    Tip : 소스 코드를 암호화하는 경우에, ALTER 암호 옵션을 함께 사용하는 것이 좋다. 만약 ALTER 암호를 사용하지 않으면, SAS 아래의 경고 메시지를 출력한다.
     
    WARNING: 암호화된 소스 라인을 가진 DATA STEP 저장된 프로그램 뷰에 대해 ALTER / PROTECT 암호를 사용하는 것이 좋습니다.

     

    (3) NOSAVE

       소스 코드를 저장하지 않도록 지정한다.

    경고 : 만약 데이터 스텝 뷰를 NOSAVE 옵션을 지정하여 생성하면, 뷰는 현재 SAS 버전에서 다른 버전으로 이동 또는 복사되지 않을 있다.
    기본사항 : SAVE

     


    10) PGM=program-name

       향후에 DATA 스텝에서 데이터를 생성 또는 실행하기 위하여 컴파일하여 저장하기 위한 프로그램의 이름을 지정한다. 컴파일하여 저장하기 위한 프로그램을 생성하기 위하여, PGM=옵션 앞에 슬래쉬(/)를 지정하라. 향후에 이 프로그램을 실행하기 위하여는 슬래쉬(/)를 사용하지 않고 PGM=옵션을 지정하라.

    Tip : 저장된 프로그램을 생성하는 경우에 SAS 매크로 변수를 바로 처리 것이다. 저장된 프로그램이 사용 때까지 매크로 변수 처리를 지연하기 위하여 SYMGET 함수를 사용하라.
    주요기능 : 예제4 : 컴파일 프로그램 저장과 실행

     

    11) NOLIST

       _ERROR_의 값이 1인 경우에 SAS로그에 모든 변수를 출력하지 않도록 제어한다. NOLIST는 DATA 구문에서 마지막에 지정해야 한다.

    제한사항 : NOLIST DATA 구문에서 마지막에 지정되어야 한다.

     


    3. 상세 설명

    SAS 기본 구문 (파일 처리)


    4. 범 주

     

    1) DATA 구문 사용하기

    데이터 스텝은 DATA 구문으로 시작한다. 다음과 같은 형태의 출력물을 생성하기 위하여 DATA 구문을 사용하라. (SAS 데이터 세트, 데이터 , 저장된 프로그램) DATA 구문에서는 다수의 데이터 세트를 지정 있다. 그러나, 여러 데이터 세트 중에서 단지 하나의 데이터 세트에 대하여 데이터 뷰를 생성 있다. VIEW= 옵션 지정으로 VIEW 생성 있고, PGM=옵션 지정으로 컴파일 되어 저장된 프로그램을 생성 있다.

     


    2) 읽기(READ) 암호와 수정(ALTER) 암호 사용하기

    만약 컴파일 되어 저장된 데이터 스텝 프로그램 또는 데이터 스텝 뷰를 생성하면서 읽기(READ) 수정(ALTER) 암호를 함께 지정하였으면 다음 항목이 적용된다.

     

    (1) 컴파일 되어 저장된 데이터 스텝 프로그램 또는 데이터 스텝 뷰를 실행하기 위하여 읽기 또는 수정 암호가 필요하다.

     

    (2) 컴파일 되어 저장된 데이터 스텝 프로그램 또는 데이터 스텝 뷰가 DESCRIBE 구문과 EXECUTE 구문을 모두 포함하면, 읽기 또는 수정 암호가 필요하다.

     

    A) 만약 DESCRIBE 구문과 EXECUTE 구문을 지정하고 동시에 수정(ALTER) 암호를 사용하면, 다음 항목이 적용된다.

     

    • (a) SAS는 DESCRIBE 구문과 EXECUTE 구문을 모두 실행한다.
    • (b) 유효하지 않은 수정(ALTER) 암호를 사용하여 컴파일 되어 저장된 데이터 스텝 프로그램 또는 데이터 스텝 뷰를 실행하면,
      • DESCRITBE 구문은 실행되지 않는다.
      • 배치모드에서, EXECUTE 구문은 영향을 받지 않는다.
      • 대화식 모드에서는 읽기(READ) 암호를 입력하도록 입력 창을 표시한다. 만약 입력한 읽기(READ) 암호가 유효하면, SAS는 EXECUTE 구문을 처리한다. 그러나, 입력한 읽기 암호가 유효하지 않으면, SAS는 EXECUTE 구문을 처리 하지 않는다.

    B) 만약 DESCRITBE 구문과 EXECUTE 구문을 지정하고 동시에 읽기 암호를 사용하면, 다음 항목이 적용된다.

     

    • (a) 대화식 모드에서, SAS는 수정 암호를 입력하도록 입력 창을 표시한다.
      • 유효한 수정 암호를 입력하면, SAS는 DESCRIBE 구문과 EXECUTE 구문을 모두 실행한다.
      • 유효하지 않는 수정 암호를 입력하면, SAS는 DESCRIBE 구문은 처리하지 못하고, EXECUTE 구문만 처리한다.
    • (b) 배치모드에서, SAS는 EXECUTE 구문은 처리하지만, DESCRIBE 구문은 처리하지 않는다.
    • (c) 대화식 모드와 배치 모드 양쪽에서, 유효하지 않은 읽기 암호를 지정하면, EXECUTE 구문은 처리되지 않는다.

     

    (3) 컴파일 되어 저장된 데이터 스텝 프로그램 또는 데이터 스텝 뷰가 DESCRIBE 구문을 포함하면, 수정 암호가 요구된다.

     

    (4) 컴파일 되어 저장된 데이터 스텝 프로그램 또는 데이터 스텝 뷰를 수정하기 위해서 수정 암호가 요구된다.

     


    3)   출력 데이터 세트 생성

    다수의 출력 데이터 세트를 생성하기 위해서 DATA 구문을 사용하자. 개별 출력 데이터 세트마다 다른 데이터 세트 옵션을 적용 있다. 다음 데이터 세트는 두개(EXAMPLE1 EXAMPLE2) 출력 데이터 세트를 생성한다. EXAMPLE2 데이터 세트를 작성 때에 IDnumber 변수를 제거하기 위하여 DROP 옵션을 사용한다. 

     

    SAS Statements
    data example1 example2 (drop=IDnumber);
    
               set sample;
    
    . . .more SAS statements. . .
    
    run;

     


    4)    데이터 세트 생성하지 않는 경우

    일반적으로, DATA 구문은 출력 데이터 세트를 생성하기 위하여 적어도 하나의 데이터 세트 이름을 지정한다. 그러나, 데이터 스텝이 리포트를 작성하거나, 외부 파일에 데이터 작성이 목적이라면, 출력 데이터 세트 생성이 불필요 있다. 데이터 세트 이름 대신에 키워드 _NULL_ 사용하면, SAS 출력 데이터 세트를 생성하지 않고 데이터 스텝을 실행한다. 다음 예제는 개별 관측치에 대하여 Name ID 변수의 값을 SAS 로그에 작성하지만, 출력 데이터 세트를 생성하지 않는다.

    SAS Statements
    data _NULL_;
       set sample;
         put Name ID;
    run;

     


    5)  데이터 스텝 VIEW 생성

    데이터 스텝 뷰를 생성하고 이후에 뷰를 실행 있다. 다음 데이터 스텝 예제는 데이터 스텝 뷰를 생성하면서, 소스 코드를 암호화하여 저장하기 위하여 SOURCE=ENCRYPT 옵션을 사용한다.

     

    SAS Statements
    data phone_list / view=phone_list (source=encrypt);
    
       set customer_list;
    
       . . .more SAS statements. . .
    
    run;

     

    데이터 스텝 (View) 대한 상세한 정보는 SAS Language Reference: Concepts 에서 “SAS Data Views” 참조하라..

     


    6)  컴파일 되어 저장된 데이터 스텝 프로그램 생성

    데이터 스텝 프로그램을 컴파일하여 저장하는 기능은 저장되어 있는 프로그램을 향후에 바로 사용 있도록 한다. 컴파일 되어 저장된 데이터 스텝 프로그램에 대한 반복적인 사용은 프로그램에 대한 컴파일 과정을 제거하여서 처리 시간을 단축 있다. 다음 데이터 스텝 예제는 데이터 스텝 프로그램을 컴파일 하고 저장한다. 컴파일 되어 저장된 프로그램이 임의로 수정되는 것을 방지하기 위해서 수정(ALTER)암호를 지정한다.

    SAS Statements
    data testfile / pgm=stored.test_program (alter=sales);
    
       set sales_data;
    
       . . .more SAS statements. . .
    
    run;

     

    컴파일 되어 저장된 데이터 스텝 프로그램에 대한 상세한 정보는 SAS Language Reference: Concepts 에서 “Stored Compiled DATA Step Programs” 참조하라.

     


    7) 데이터 스텝 VIEW 소스 확인

    다음 예제는 SAS 로그에 뷰의 소스를 작성하기 위해서 데이터 스텝 VIEW DESCRIBE 구문을 사용한다.

    SAS Statements
    data view=inventory;
       describe;
    run;

     

    DESCRIBE 구문에 관한 상세한 정보는 DESCRIBE 구문을 참조하라.

     


    8) 컴파일 되어 저장된(STORED COMPILED) 데이터 스텝 프로그램 실행

    다음 예제는 컴파일 되어 저장된 데이터 스텝 프로그램을 실행하는 방법이다. SAS 로그에 소스 코드를 출력하기 위해서 DESCRIBE 구문을 함께 사용한다.

    SAS Statements
    libname stored 'SAS library';
    
    data pgm=stored.employee_list;
       describe;
       execute;
    run;

     

    DESCRIBE 구문에 관한 상세한 정보는 DESCRIBE 구문을 참조하고, EXECUTE 구문에 관한 상세한 정보는 EXECUTE 구문을 참조하라.

     


    5. 관련 구문

    구문명 구문내용
    DATA 구문 DATA 스텝 시작의 선언 및 출력 SAS DATA 세트의 이름을 설정하고, 또한 데이터 뷰(View)의 이름도 지정할 수 있다.
    DESCRIBE 구문 컴파일되어 저장된 데이터 세트 프로그램 또는 데이터 스텝 뷰 테이블(View)에 대한 소스 코드를 SAS 로그에 출력한다.
    EXECUTE 구문 컴파일되어 저장된 데이터 스텝 프로그램을 실행한다.
    LEAVE 구문 현재 반복문의 처리를 중지하고, 반복문 바로 다음에 위치하는 문장을 계속 실행한다.
    LINK 구문 프로그램 실행이 지정된 구문 레이블로 바로 이동하여 일련의 SAS 문장을 실행한다. 
    데이터 세트 옵션  

     


    6. 예 제

     

    예제1 : 다중 데이터 파일 생성과 데이터 세트 옵션 사용

    다음 DATA 구문은 다중 데이터 세트를 생성하고, 개별 데이터 세트에 대하여 출력되는 항목을 수정한다.

    SAS Statements
    data error (keep=subject date weight)
         fitness(label='Exercise Study'
                 rename=(weight=pounds));

     

    ERROR 데이터 세트에는 3개의 변수를 포함하도록 하고, FITNESS 데이터 세트에는 데이터 세트 라벨을 지정하고, WEIGHT 변수 이름을 POUNDS 변경한다.

     


    예제2 : 데이터 스텝 VIEW 생성

    다음 데이터 스텝은 SAS 데이터 파일 대신 데이터 스텝 VIEW 생성한다.

    SAS Statements
    libname ourlib 'SAS-library';
     
    data ourlib.test / view=ourlib.test;
       set ourlib.fittest;
       tot=sum(of score1-score10);
    run;

     


    예제3 : VIEW와 데이터 파일 동시에 생성하기

    다음 데이터 스텝은 THEIRLIB.TEST라는 이름의 데이터 스텝 뷰를 생성하고, 추가적으로 SCORETOT라는 임시 SAS 데이터 세트를 생성한다.

    SAS Statements
    libname ourlib 'SAS-library-1';
    libname theirlib 'SAS-library-2';
     
    data theirlib.test scoretot
       / view=theirlib.test;
       set ourlib.fittest;
       tot=sum(of score1-score10);
    run;

     

    THEIRLIB.TEST VIEW 이후의 DATA 또는 PROC 스텝에서 처리할 때까지, 데이터 파일 SCORETOT 생성하지 않는다.

     


    예제4 : 컴파일 된 프로그램 저장과 실행

    번째 데이터 스텝은 STORED.SALESFIG 이름의 컴파일 되어 저장된 프로그램을 생성한다.

    SAS Statements
    libname in 'SAS-library-1 ';
    libname stored 'SAS-library-2 ';
     
    data salesdata / pgm=stored.salesfig;
       set in.sales;
       qtr1tot=jan+feb+mar;
    run;

     

    컴파일 되어 저장된 프로그램 STORED.SALESFIG 실행 , SALESDATA 데이터 세트를 생성한다.

    SAS Statements
    data pgm=stored.salesfig;
    run;

     


    예제5 : CUSTOMER 리포트 생성

    다음 프로그램에서 번째 데이터 스텝은 SAS 데이터 생성하지 않고 고객 리포트를 생성하기 위해서 _NULL_ 키워드를 사용한다.

    SAS Statements
    data sales;
       input dept : $10. jan feb mar;
       datalines;
    shoes 4344 3555 2666
    housewares 3777 4888 7999
    appliances 53111 7122 41333
    ;
     
    data _null_;
       set sales;
       qtr1tot=jan+feb+mar;
       put 'Total Quarterly Sales: '
           qtr1tot dollar12.;
    run;

     


    예제6 : 컴파일 되어 저장된 데이터 스텝 프로그램 생성과 동시에 암호 지정하기

    번째 데이터 스텝은 STORED.ITEMS 컴파일 되어 저장된 데이터 스텝 프로그램을 생성한다. 프로그램은 프로그램 수정에 대한 권한을 관리하기 위한 수정(ALTER) 암호를 지정한다.

    SAS Statements
    libname stored 'SAS-library';
    data employees / pgm=stored.items (alter=klondike);
       set sample;
       if TotalItems > 200 then output;
       run;

     

    다음 데이터 세트는 컴파일 되어 저장된 데이터 스텝 프로그램 STORED.ITEMS 실행한다. SAS로그에 소스 코드를 출력하기 위해서 DESCRIE 구문을 사용한다. 프로그램이 ALTER 암호를 지정하여 생성되었기 때문에, DESCRIBE 구문을 사용하기 위해서 수정 암호를 지정해야 한다. 만약 암호를 입력하지 않으면, SAS 암호를 입력하도록 입력 창을 표시한다.

    SAS Statements
    data pgm=stored.items (alter=klondike);
       describe;
       execute;
    run;

     


    예제7 : 중첩 레벨 출력

    다음 프로그램은 2개의 DO 구문이 중첩되어 있다. 4개의 로그 메시지가 출력되는데, 중첩 레벨(DO 구문) 대한 시작과 종료 메시지를 출력한다.

    SAS Statements
    data _null_ /nesting;
       do i = 1 to 10;
          do j = 1 to 5;
             put i= j=;
          end;
       end;
    run;

     

    Results - Log 출력물
    6    data _null_ /nesting;
    7       do i = 1 to 10;
               -
               719
    NOTE 719-185: *** DO begin level 1 ***.
    
    
    8          do j = 1 to 5;
                  -
                  719
    NOTE 719-185: *** DO begin level 2 ***.
    
    
    9             put i= j=;
    10         end;
               ---
               720
    NOTE 720-185: *** DO end level 2 ***.
    
    
    11      end;
            ---
            720
    NOTE 720-185: *** DO end level 1 ***.
    
    
    12   run;

     


     


    [SAS Statement] SAS 데이터 스텝 구문 사전 목록]

     

    SAS 함수(SAS Function) 리스트 링크
    반응형

    댓글