본문 바로가기
SAS/SAS 함수

【SAS 함수】 79. CAT 함수

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

포스팅 목차

    79. CAT

     


    지정한 문자열들의 선행 또는 후행 공백을 제거하지 않고 문자열들을 결합하여 연결된 문자열을 반환한다.

     

    Category: 문자함수(문자열처리함수)

     

    MAIN

    문 법


    CAT
     (string-1 <, ... string-n>)


     

    Arguments

         string

           문자형 또는 수치형 상수, 변수 또는 표현식을 지정한다. item이 수치형 값인 경우, 해당 값은 BESTw.output 형식을 사용하여 문자형 문자열로 변환된다. 이 경우, 맨 앞의 선행 공백은 삭제되고 로그에 메모가 기록되지 않는다.


    상세 내용

     

    반환되는 변수의 길이(Length of Returned Variable)

    DATA 단계에서 CAT 함수가 아직 길이가 할당되지 않은 변수에 값을 반환하는 경우 해당 변수의 길이는 200바이트로 할당된다. 연결 연산자(||)가 아직 길이가 할당되지 않은 변수에 값을 반환하는 경우 결합되는 값의 길이를 합한 길이가 해당 변수의 길이로 할당된다.

     

    반환되는 변수의 길이 - 특별한 경우

    CAT 함수는 변수 또는 임시 버퍼에 결합 작업 후 결과 값을 반환한다. CAT 함수에서 반환되는 값의 길이는 다음 중 하나로 설정된다.

    • WHERE 구문 및 PROC SQL에서 최대 200자
    • WHERE 절 이외의 데이터 단계에서 최대 32767자
    • CAT 함수가 매크로 프로세서에서 호출되는 경우 65534자

    CAT 함수가 임시 버퍼에 값을 반환하는 경우, 버퍼의 길이는 호출 환경에 따라 다르며, CAT 함수가 처리를 완료한 후 버퍼의 값은 잘릴 수 있다. 이 경우, SAS는 로그에 잘림 현상에 대한 메시지를 출력하지 않습니다. 변수 또는 버퍼의 길이가 충분하지 않아 문자 연결 작 결과를 저장할 수 없는 경우 SAS는 다음 작업을 수행한다.

    • DATA 단계 및 PROC SQL에서 결과를 결측치 값으로 변경한다.
    • 호출 환경에 따라 결과가 잘려졌거나 공백 값으로 설정되었다는 경고 메시지를 로그에 출력한다.
    • 함수 호출 위치와 잘림의 원인이 되는 인수 목록을 나열하는 메모를 로그에 출력한다.
    • DATA 단계에서 _ERROR_를 1로 설정한다.

    CAT 함수는 BESTw. 출력 형식으로 수치형 값의 출력 형식을 지정한 후 수치형 인수에서 선행과 후행 공백을 제거한다.

     


    비 교

    CAT, CATS, CATT, CATX 함수의 결과는 일반적으로 연결 연산자(||)와 TRIM 및 LEFT 함수의 특정 조합에 의해 생성되는 결과와 동일하다. 그러나, CAT, CATS, CATT, CATX 함수의 기본 길이는 연결 연산자 사용 시 획득되는 길이와 다르다. 자세한 내용은 반환되는 변수의 길이 부분을 참조하시오.


    CAT, CATS, CATT, CATX 함수는 TRIM 및 LEFT 함수를 사용하는 것 보다 빠르며, 변수 목록을 지원하는 호출 환경에서는 변수 목록에 대응하는 OF 구문과 함께 사용할 수 있다.

    다음 표는 CAT, CATS, CATT, CATX 함수와 동일한 코드를 나타내며, X1 - X4 변수는 문자 변수를 지정하고 SP는 공백이나 쉼표와 같은 구분 기호를 표시한다.

    함수 동일한 코드
    CAT(OF X1-X4) X1||X2||X3||X4
    CATS(OF X1-X4) TRIM(LEFT(X1))||TRIM(LEFT(X2))||TRIM(LEFT(X3))||TRIM(LEFT(X4))
    CATT(OF X1-X4) TRIM(X1)||TRIM(X2)||TRIM(X3)||TRIM(X4)
    CATX(SP, OF X1-X4) TRIM(LEFT(X1))||SP||TRIM(LEFT(X2))||SP||TRIM(LEFT(X3))||SP||TRIM(LEFT(X4))

     


    관련함수

    함수명 함수내용
    CAT 지정한 문자열들을 결합하여 변수를 생성한다.
    CATQ 구분 기호를 사용하여 개별 항목을 구분하고, 구분 기호가 포함된 문자열에 따옴표를 추가하여 문자 및 숫자 값을 연결합니다.
    CATS 앞뒤의 Blank를 제거한 후 문자열을 결합하여 변수를 생성한다.
    CATT 지정한 변수 뒤의 Blank를 제거하여 문자열을 결합하여 변수를 생성한다.
    CATX 변수 또는 문자열 앞뒤의 Blank를 제거하고, 지정한 구분자를 삽입하여 변수 또는 문자열을 결합하여 변수를 생성한다.
    CALL CATS 문자열의 앞뒤 공백을 모두 제거한후에 문자열을 연결한다.
    CALL CATT 문자열의 뒤쪽 공백을 제거한후에 문자열을 연결한다.
    CALL CATX 문자열의 앞뒤 공백을 제거한 후에 문자열을 연결시키고, 그 때 분리자가 필요한 경우 추가 삽입한다.

     


    예 제

     

    예 제 1 :

    x,y,z,a 변수를 결합하여서 result변수를 생성하자. 

    SAS Statements
    data _null_;
         x = ' The 2002 Olym'; 
         y = 'pic Arts Festi';
         z = ' val included works by D ';
         a = 'ale Chihuly.';
         result=cat(x,y,z,a);
         PUT "1234567890123456789012345678901234567890";
         put result $char.; 
    run;

     

    Results
    The 2002 Olympic Arts Festi  val included works by D  ale Chihuly.

     


    예 제 2 :

    문자열 결합 함수들 비교.

    •    cat  : 변수들을 결합한다.
    •   cats : 변수 앞뒤의 공백 제거후 결합한다.
    •   catt  : 변수 뒤의 공백을 제거후 결합한다.
    •   catx : 변수 앞뒤의 공백을 제거후 구분자를 삽입한 후에 결합한다.
    SAS Statements
    data test;
         input (x1-x4) ($); 
         x5=' 5';
         length new1 $40 new2-new4 $10 ; 
         new1 = cat(of x1-x5);
         new2 = cats(of x1-x5);
         new3 = catt(x1,x2,x3,x4,x5);
         new4 = catx(',', of x1-x5);
         keep new:;
    datalines;
    1 2 3 4
    5 6 . 8
    ;

     

    Results
    OBS                   new1              new2   new3     new4
      1     1       2       3       4        5    12345    1234 5    1,2,3,4,5
      2     5       6               8        5    5685     568 5     5,6,8,5

     


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

     

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

     

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

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

    【SAS 함수】 81. CATT 함수  (0) 2018.11.27
    【SAS 함수】 80. CATS 함수  (0) 2018.11.26
    【SAS 함수】 78. CALL VNEXT 함수  (0) 2018.11.26
    【SAS 함수】 77. CALL VNAME 함수  (0) 2018.11.26
    【SAS 함수】 76. CALL TANH 함수  (0) 2018.11.26

    댓글