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

【SAS Statement】 SELECT 구문

by 기서무나구물 2022. 2. 5.

포스팅 목차

    o SELECT 구문

     


    1. 목 적 

       SELECT 구문은 여러 SAS 구문 또는 구문 그룹 중의 하나를 실행한다.

     


    2. 문 법 

    SELECT <(select-expression)>;
               WHEN-1 (when-expression-1< ..., when-expression-n>) statement;
         < ... WHEN-n(when-expression-1 <..., when-expression-n>) statement;>
    END;

    1) (select-expression)

       하나의 값으로 계산되는 SAS 표현식을 지정한다. 

    참고 : Select-표현식이 포함되는 경우에 when-표현식 평가하기

     

    2)  (when-expression)

       복합 표현식으로 구성된 SAS 표현식을 지정한다. SELECT는 적어도 하나 이상의 when-expression을 지정해야 하며, 다중 when 표현식(when-expression)을 콤마를 사용하여 분리 작성하는 것은 논리 연산자 OR을 사용하여 분리 작성하는 것과 동일하다. select-expression 존재 여부에 따라 when-expression을 사용하는 방식이 달라진다.

    Tip : 다중 when 표현식(when-expression) 콤마를 사용하여 분리 작성하는 것은 논리연산자 OR 사용하여 분리 작성하는 것과 동일하다.(예제1 참조)
    Tip : select-expression 존재 여부에 따라 when-expression 사용하는 방식이 달라진다.
    참고 : Select-expression 포함되지 않는 경우에 when-expression 실행 방법

     

    3) statement

       DO, SELECT, NULL 구문 등을 포함하여 SAS 실행문을 지정할 수 있다. SAS 구문 인수를 지정해야 한다.

     

    3. 범 주

    SAS 기본 구문 (제어 구문)

     


    4. 상세설명

    1) SELECT그룹에서 WHEN 구문 사용하기

       SELECT 구문은 SELECT 그룹의 시작을 표시한다. SELECT 그룹은 특별한 조건이 참인 경우에 실행되는 SAS 구문을 표시하기 위한 WHEN 구문을 포함한다. SELECT 그룹에서 적어도 하나의 WHEN 구문을 사용해야 하고, 옵션으로 사용되는 OTHERWISE 구문은 만족하는 WHEN 조건이 없는 경우에 실행하기 위한 문장을 지정하며, END 구문은 SELECT 그룹의 종료를 표시한다.

       WHEN 구문에서 사용되는 NULL 구문은 더 이상 작업을 추가로 수행하지 않고, 조건을 참으로 인식하여 처리하도록 하며, OTHERWISE 구문에서 사용되는 NULL 구문은 모든 WHEN 조건이 거짓인 경우에 에러 메시지의 발생을 방지한다.

     

    2) Select-표현식이 포함되는 경우에 when-표현식 평가하기

       Select-expression이 존재하면, SAS는 select-expression과 when-expression을 평가하는데, 두 개의 표현식이 동일한지 여부를 비교하여 참과 거짓의 결괏값을 반환한다. 비교 결과가 참(동일하면)이면 SAS 구문을 실행하고, 비교 결과가 거짓(서로 다르면)이면 프로그램 실행이 현재 WHEN 구문 안에서 다음 when-expression으로 이동하고, 더 이상 표현식이 없다면 다음 WHEN 구문으로 이동한다. 만족하는 WHEN 구문이 더 이상 없는 경우에 OTHERWISE 구문이 존재하면 OTHERWISE 구문을 실행한다. 모든 SELECT-WHEN 문장의 비교 결과가 거짓이고 OTHERWISE 구문이 존재하지 않으면, SAS는 에러 메시지를 표시하고 데이터 스텝 실행을 중지한다.

     

    3) Select-expression을 지정하지 않는 경우에 when-expression 실행 방법

       select-expression 이 존재하지 않으면, when-expression이 참 또는 거짓의 결과를 도출하기 위하여 평가된다. 결과가 참이면 해당 SAS 구문이 실행된다. 결과가 거짓이라면, 현재 WHEN 구문 안에서 다음 when-expression으로 이동하고, 더 이상 expressions 없으면 다음 WHEN 구문으로 이동한다. 만족하는 WHEN 구문이 더 이상 없는 경우에 OTHERWISE 구문이 존재하면 OTHERWISE 구문을 실행한다. (즉, SAS는 WHEN 구문에서 처음으로 참으로 정의된 작업을 수행한다.) 모든 when-expressions의 결과가 거짓이고 OTHERWISE 구문이 존재하지 않으면, SAS는 에러 메시지를 발행한다. 다수의 WHEN 구문이 참(True)인 when-expression을 소유하면 처음 참이 존재하는 WHEN 구문을 사용하고, 그 이후의 다른 when-expressions은 평가되지 않는다.

     

    4) %INCLUDE 파일을 사용하여 대용량 데이터 처리하기

    복잡한 프로그램을 효율적으로 처리하기 위한 가지 방법으로 데이터세트에서 %INCLUDE 구문을 사용하는 것이다. %INCLUDE 구문을 사용하면 주요 프로그램을 효율적으로 관리하면서 복잡한 처리를 수행 있다. 메인 프로그램에서 사용되는 %INCLUDE 파일은 WHEN 구문과 데이터 처리를 위한 다른 SAS 구문을 함께 포함 있다.

    참고 : 예제5 : 복잡한 프로그램 처리하기

     


    5. 비교 사항

    • 프로그램 길이가 짧은 문장을 작성하기 위하여는 IF-THEN/ELSE 구문을 사용하라. IF 구문에서 지정된 조건에 해당하는 관측치 또는 레코드를 계속 처리하기 위하여 THEN 구문 없이 분할 IF 구문을 사용하라.

     


    6. 관련 구문

    구문명 구문내용
    DO 구문 그룹 단위로 실행하기 위한 SAS 문장의 그룹을 지정하라.
    DO 반복 구문 인덱스 변수의 값에 따라서 DO 구문과 END 구문 사이에 작성한 구문을 반복하여서 실행한다.
    IF-THEN/ELSE 구문
    지정한 조건을 만족하는 관측치에 대하여 SAS 문장을 실행한다. (IF 조건문)
    SELECT 구문 여러 SAS 구문 또는 구문 그룹 중의 하나를 실행한다. (조건문)
    부분 분할 IF 구문 지정된 표현식의 조건을 만족하는 관측치에 대하여 프로그램 처리를 계속 수행한다.

     


    7. 예 제

     

    예제1 : 기본 사용법

    SAS Statements
    select (a);
       when (1) x=x*10;
       when (2);
       when (3,4,5) x=x*100;
       otherwise;
    end;

     


    예제2 : DO 그룹 사용하기

    SAS Statements
    select (payclass);
       when ('monthly') amt=salary;
       when ('hourly')
          do;
             amt=hrlywage*min(hrs,40);
             if hrs>40 then put 'CHECK TIMECARD';
          end;         /* DO 구문 종료  */
       otherwise put 'PROBLEM OBSERVATION';
    end;               /* SELECT 구문 종료 */

     


    예제3 : 복잡한 표현 사용하기

    SAS Statements
    select;
       when (mon in ('JUN', 'JUL', 'AUG') and temp>70) put 'SUMMER ' mon=;
       when (mon in ('MAR', 'APR', 'MAY')) put 'SPRING ' mon=;
       otherwise put 'FALL OR WINTER ' mon=;
    end;

     


    예제4 : 동일한지 여부를 비교하기 위한 프로그램 생성하기

    SAS Statements
    /* 잘못된 사용법 */
    select (x);  
       when (x=2) put 'two';   
    end;                       
     
      /* 올바른 사용법 */
    select(x);
       when (2) put 'two';    
    end;
     
      /* 올바른 사용법 */
    select;
       when (x=2) put 'two';   
    end;

     


    예제5 : 복잡한 프로그램 처리하기

    다음 예제에서, %INCLUDE 구문은 inventory에서 new old 항목을 처리하기 위하여 WHEN 구문이 포함된 프로그램을 각각 호출한다. 메인 프로그램은 데이터스텝의 전체 로직을 보여준다.

     

    SAS Statements
    data test (keep=ItemNumber);
       set ItemList;
       select;
          %include NewItems;
          %include OldItems;
          otherwise put 'Item ' ItemNumber ' is not in the inventory.';
       end;
    run;

     


     


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

     

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

    'SAS > SAS 구문사전' 카테고리의 다른 글

    【SAS Statement】 STOP 구문  (0) 2022.02.05
    【SAS Statement】 SET 구문  (0) 2022.02.05
    [SAS Statement] SASFILE 구문  (0) 2022.02.05
    [SAS Statement] RUN 구문  (0) 2022.02.05
    【SAS Statement】 RETURN 구문  (0) 2022.02.05

    댓글