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

【SAS Statement】 INPUT 구문, 입력형식 지정 입력방식(포맷 지정 입력형식)

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

포스팅 목차

    o INPUT 구문, 입력 형식 지정 입력방식(포맷 지정 입력 형식)

     


    1. 목 적

       INPUT 구문, 입력 형식 지정 입력방식은 지정된 입력 형식(Informat)으로 입력값을 읽어서 해당하는 SAS 변수에 할당한다.

     


    2. 문 법

    INPUT <pointer-control> variable informat. <@ | @@>;

    INPUT<pointer-control> (variable-list) (informat-list) < @ | @@>;

    INPUT <pointer-control> (variable-list) (<n*> informat.) < @ | @@>;

     


    3. 구문 설명

    1) Pointer-control

       입력 포인터를 입력 버퍼에서 지정된 라인 또는 열로 이동시킨다.

     

    참고 : INPUT 구문에서 포인터 조절자 포인터 조절자참조

     

    2) Variable

       입력값이 할당되는 변수를 지정한다. 입력 형식 리스트(informat-list)는 변수 리스트(variable-list) 뒤에 위치해야 한다.

     

    필요사항 : 입력형식 리스트(informat-list) 변수 리스트(variable-list) 뒤에 위치해야 한다.
    주요기능 : 예제1: 포인터 조절자와 함께 포맷 지정 입력 방식 사용하기

     

    3) (variable-list)

       입력값이 할당되는 변수 리스트를 지정한다.

     

    참고 : 변수와 입력형식(informat) 그룹화하기
    주요기능 : 예제2 : 입력형식 리스트 사용하기

     

    4) Informat.

       변숫값을 읽기 위하여 사용되는 입력 형식을 지정한다.

     

    Tip : 실제 입력 값에 포함되어 있는 소수 부분의 값은 수치형 입력형식(informat)에서 소수 부분의 지정자를 무시한다.
    주요기능 : 예제1: 포인터 조절자와 함께 포맷 지정 입력 방식 사용하기

     

    5) (informat-list)

       앞부분에 위치한 변수 리스트에서 해당하는 값을 읽기 위하여 사용하는 입력형식 리스트를 지정한다.

    INPUT 구문의 입력형식 리스트에는 다음 항목을 지정할 수 있다.

     

    제한사항 : 입력형식 리스트(informat-list) 변수 리스트 (variable-list) 바로 뒤에 작성해야 한다.
    참고 : 변수와 입력형식을 그룹화하기
    주요기능 : 예제2 : 입력형식 리스트 사용하기

     

       (1) Informat.

         변수의 값을 읽기 위하여 사용되는 입력 형식(Informat)을 지정하라.

     

       (2) Point-control

         지정된 열로 입력 포인터의 위치를 옮기기 위하여 포인터 조절자 중에서 하나를 지정한다. (@,#,/,+)(3) n*입력형식 리스트에서 바로 다음에 지정된 입력 형식을 n번 반복하도록 지정한다.

     

       (3) n*

         입력형식 리스트에서 바로 다음에 지정된 입력형식을 n 반복하도록 지정한다.

    예제 : 다음 문장은 7.2 입력형식을 사용하여 GRADES1, GRADES2, GRADES3 변수를 읽고, 5.2 입력형식을 사용하여 GRADES4, GRADES5 변수를 읽는다.

    Input (grades1-grades5) (3*7.2 2*5.2)

     

    6) @

       데이터 스텝의 동일 반복 내에서 바로 다음 INPUT 구문의 실행까지 입력 레코드를 유지한다. 이 행 고정 지정자(line-hold specifier)는 후행 @라 부른다. 후행@는 다음 차례의 INPUT 구문이 자동적으로 현재 입력 레코드에 대한 고정을 해제하고 다음 차례의 레코드를 입력 버퍼로 읽는 것을 제한한다. 동일한 레코드를 여러 번 읽을 필요가 있는 경우에 유용하다.

     

    제한사항 : 후행 @ INPUT 구문의 마지막 항목으로 작성해야 한다.
    Tip : 후행@ 이후의 INPUT 구문이 자동적으로 현재 입력 레코드를 해제하고 다음 차례의 레코드를 입력 버퍼로 읽는 것을 방지한다. 동일한 레코드를 여러 읽을 필요가 있는 경우에 유용하다.
    참고: INPUT 구문에서 행고정 지정자 사용하기참조

     

    7) @@

       데이터 스텝의 반복수행과정 중에서 다음 반복 과정의 INPUT 구문 실행을 위하여 현재 입력 레코드를 유지한다. 이 행 고정 지정자(line-hold specifier)를 이중 후행@라고 한다. 이중 후행 @는 개별 입력 라인이 여러 관측치에 대한 값을 소유하고 있는 경우에 유용하다.

     

    제한사항 : 이중 후행 @ INPUT 구문의 마지막 항목으로 작성해야 한다.
    Tip : 이중 후행 @ 개별 입력 라인이 여러 관측치에 대한 값을 소유하고 있는 경우에 유용하다.
    참고: INPUT 구문에서 행고정 지정자 사용하기참조

    4. 범 주

    SAS 기본 구문 (파일 처리 구문)

     


    5. 상세 설명

    포맷 지정 입력형식 사용 시기

    입력형식(Informat) 변수 이름 뒤에 위치하고, 변수의 값을 읽는 방법을 정의한다. 입력형식은 입력값의 데이터 유형과 필드 길이를 부여한다. 입력형식은 압축된 10진수(packed decimal) 또는 콤마(comma) 같은 특수한 문자가 포함된 숫자와 같이 비표준화 형태로 저장된 데이터를 읽는다.

     

    단순포맷지정 입력에서 변수의 순서는 입력 데이터의 해당하는 관측값과 동일한 순서로 존재해야 한다. 임의의 순서로 변수를 읽기 위하여 포인터 조절자를 사용하라.

     

    결측치

    일반적으로 SAS 포맷 지정 입력 방식에서 숫자 값에 대하여는 단일 마침표(.) 결측치를 표시하고, 문자 값에 대하여는 공백이 결측치를 표시한다. 포맷 지정 입력에서 지정된 입력형식은 공백처리 방식을 정의한다. 예를 들어, $CHAR.w 공백을 값의 일부분으로 읽고, 반면에 BZ.w 공백을 고려하지 않는다.

     

    가변길이 레코드(Variable-Length record) 읽기

    기본적으로, 가변길이 레코드를 읽기 위하여 FLOWOVER 옵션을 사용하라. 레코드에 기대보다 적은 관측값이 포함되어 있으면, INPUT 구문은 다음 데이터 레코드에서 값을 읽는다. 가변길이 데이터를 읽기 위하여 INFILE 구문에서 TRUNCOVER 옵션도 사용 있다. 상세한 내용은 INFILE 구문에서 라인의 끝을 경유하여 읽기 참조하라.

     

    변수와 입력형식(informat)을 그룹화하기

    입력값이 일정한 패턴으로 배열되어 있으면, 입력형식 리스트를 그룹화하여 사용 있다. 그룹화된 입력형식 리스트는 가지 형태로 구성된다.

     

    • 읽을 변수의 이름을 괄호 안에 작성하라.
    • 대응하는 입력형식을 공백 또는 콤마로 구분하여 괄호 안에 작성하라.

     

    입력형식 리스트는 모든 변수가 해당하는 관측값을 읽을 때까지 계속 반복하여서 사용되며, 번호가 매겨진 변수 이름을 단축 형태로 표현 있기 때문에, INPUT 구문을 단순하게 작성 있다. 입력형식 리스트를 사용하는 경우에 개별 변수를 나열하여 사용하는 방식을 피하라.

     

    예를 들어, Score1-Score5 형태는 개별 행에서 5 변수의 관측값이 공백 없이 5 열에 저장되어 있으면, 다음 INPUT 구문으로 값을 읽는다.

     

    input (score1-score5) (4. 4. 4. 4. 4.);

     

    그러나, 입력형식보다 많은 변수가 지정되어 있으면, INPUT 구문은 나머지 변수를 읽기 위하여 입력형식 리스트를 앞에서부터 다시 사용한다. 앞의 문장보다 짧은 형태는 다음과 같다.

     

    input (score1-score5) (4.);

     

    INPUT 구문에서 필요한 다수의 입력형식 리스트를 사용 있지만, 내부에 입력형식 리스트를 포함 없다. 변수 리스트에 지정된 변수들이 모든 값을 읽은 후에, INPUT 구문은 입력형식 리스트에서 사용되지 않은 나머지 입력형식을 무시한다. “예제3 : 필요로 하는 보다 많은 입력형식 지정자가 작성된 경우 참조하라.

     

    입력형식 리스트에서 n* 수정자는 다음에 위치하는 입력형식을 n 반복하도록 지정한다. 예를 들어,

     

    input (name score1-score5) ($10. 5*4.);

     

    입력형식(Informat) 저장 방법

    INPUT 구문에서 지정된 입력형식은 SAS 데이터 세트와 함께 저장되지 않는다. INFORMAT 또는 ATTRIB 구문에서 지정된 입력형식은 영구적으로 저장되고, 이후 데이터 스텝에서 입력형식 지정 없이 영구적으로 입력형식이 저장되어 있는 데이터를 읽을 있다.

     


    6. 비교 사항

    • 포맷 지정 입력 형식으로 변수의 값을 읽을 때에 포인터 이동은 열 입력방식의 포인터 이동 방식과 유사하다. 입력 포인터는 입력형식이 지정한 길이를 이동 한 후 다음 열에 멈춘다. 열을 기준으로 정렬되지 않은 데이터를 입력형식으로 읽기 위하여 수정된 목록 입력 방식을 사용하라. 수정된 목록 입력방식을 사용하면 목록 입력방식에서 검색 기능을 사용 할 수가 있다. INPUT 구문에서 “행고정 지정자 사용하기” 참고하라.

     

    7. 관련 구문

    함수명 함수내용
    ARRAY 구문 배열에서 사용하기 위한 배열 원소를 정의한다. 
    ATTRIB 구문 ATTRIB 구문을 사용하여 여러 변수에 대한 출력 형식(format), 입력 형식(informat), 라벨(Label), 길이(Length) 등을 한 번에 처리할 수 있다.
    FORMAT 구문 변수에 영구적으로 출력 형식(format)을 지정하여서 SAS 데이터 세트의 기술정보 (Descriptor information)를 수정한다.
    INFILE 구문 INPUT 구문을 사용하여 읽기 위한 외부 파일을 지정한다.
    INFORMAT 구문 변수에 영구적으로 입력 형식(Informat)을 지정한다. 
    INPUT 구문 입력 데이터 레코드에서 관측치 값을 변수로 읽으려는 방법을 정의하고, 입력값을 해당 SAS 변수에 할당한다. 외부 파일 또는 내부 데이터에서 원시 데이터를 읽기 위하여 INPUT 구문을 사용한다. 
    INPUT 구문, 열입력 방식 지정된 열에서 입력 값을 읽어서 대응되는 SAS 변수에 값을 할당한다.
    INPUT 구문, 입력형식 지정 입력 방식 지정된 입력 형식(Informat)으로 입력값을 읽어서 해당하는 SAS 변수에 할당한다.
    INPUT 구문(목록 입력방식) 입력 데이터를 검색하여서 해당하는 SAS 변수에 할당한다.
    INPUT 구문, 변수 이름 지정 입력 방식 “변수이름 = “ 뒤에 존재하는 데이터 값을 읽어서 해당 SAS 변수에 할당한다.
    LABEL 구문 변수에 대한 설명 레이블을 지정한다.
    LENGTH 구문 변수를 저장하기 위하여 사용되는 변수의 길이(byte의 수)를 지정한다. 

     


    8. 예 제

    예제1: 포인터 조절자와 함께 포맷 지정 입력 방식 사용하기

    다음 INPUT 구문은 입력형식과 포인터 조절자를 사용한다.

     

    SAS Statements
    data sales;
       infile file-specification;
       input item $10. +5 jan comma5. +5 feb comma5.
             +5 mar comma5.;
    run;

     

      [입력 데이터 레코드]

    Results
    ----+----1----+----2----+----3----+----4
    trucks         1,382     2,789     3,556
    vans           1,265     2,543     3,987
    sedans         2,391     3,011     3,658

     

    ITEM 변수의 값은 레코드에서 처음 10 열을 읽는다. 포인터는 11번째 열에서 멈춘다. ITEM 변수의 값에서 후행 공백을 삭제하고 프로그램 데이터 벡터에 작성된다. 다음으로 INPUT 구문에서 포인터는 JAN 변수의 값을 읽기 위하여 COMMA5. 포맷을 적용하기 전에 오른쪽으로 5 열을 이동한다. 입력형식은 콤마(comma) 포함한 숫자 값을 읽기 위하여 5 열을 필드의 길이로 사용한다. 그리고, 다시 INPUT 구문에서 FEB MAR 변수의 값을 읽기 위하여 포인터는 오른쪽으로 5 이동하여 COMMA5. 입력형식을 적용한다.

     

    예제2 : 입력형식 리스트 사용하기

    다음 INPUT 구문은 NAME변수의 값을 읽기 위해 문자 입력형식 $10. 적용되고, 숫자 입력형식 4. 사용하여 SCORE1~SCORE5 5 변수의 값을 읽는다.

     

    SAS Statements
    data scores;
       input (name score1-score5) ($10. 5*4.);
       datalines;
    Whittaker 121 114 137 156 142
    Smythe    111 97  122 143 127
    ;

     

     예제3 : 필요로 하는 것 보다 더 많은 입력형식 지정자가 작성된 경우

    다음 입력형식 리스트는 INPUT 구문이 실행하는 경우에 필요로 하는 보다 많은 지정자가 포함되어 있다.

     

    SAS Statements
    data test;
       input (x y z) (2.,+1);
       datalines;
    2 24 36
    0 20 30
    ;

     

    INPUT 구문은 2. 입력형식을 사용하여 X 변수의 값을 읽는다. +1 포인터 조절자는 포인터를 오른쪽으로 열을 이동한다. 다음으로 2. 입력형식을 사용하여 Y변수의 값을 읽고, 다시 +1 포인터가 적용되어 오른쪽으로 열만큼 이동하여 2.입력형식을 사용하여 Z 변수의 값을 읽는다. 3번째 반복에서 INPUT 구문은 +1 포인터 조절자를 무시한다.

     


     


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

     

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

    댓글