본문 바로가기
SAS/SAS 함수

【SAS 함수】 5. ANYALNUM 함수

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

포스팅 목차

    o ANYALNUM

     


    문자열에서 영숫자 문자(alphanumeric character)를 검색하여, 가장 먼저 검색되는 영어 또는 숫자 문자의 첫 번째 위치를 반환한다.

    Category: 문자처리함수

     


    문 법


    ANYALNUM
     (string <,start>) 

    Arguments

     

    Required Argument

         STRING

           는 검색하기 위한  문자형 상수, 변수 또는 표현식을 지정한다.

     

    Optional Argument

         START

           는 검색을 시작할 위치와 검색 방향을 지정하는 정수를 지정한다.

     


    상세 내용

    ANYALNUM 함수의 결과는 활성화된 변환 테이블( TRANTAB=시스템 옵션(SAS 각국어 지원(NLS): 레퍼런스 가이드) 참조 )에 직접 의존하며 ENCODING 및 LOCALE 시스템 옵션에 간접적으로 의존한다.

    ANYALNUM 함수는 문자열에서 가장 먼저 검색되는 숫자, 대문자 또는 소문자를 검색한다. 이러한 문자가 발견되면 ANYALNUM 함수는 문자열에서 해당 문자의 위치를 반환한다. 해당 문자를 찾을 수 없으면 ANYALNUM 함수는 0을 반환한다.

    하나의 인수만 사용하거나 두 번째 인수에 결측치 값이 있는 경우 ANYALNUM 함수는 문자열의 시작 부분부터 검색을 시작한다. 2개의 인수를 사용할 경우 2번째 인수 start은 절대값으로 처리되어서 검색을 시작하기 위한 위치를 지정한다. 검색 방향은 다음과 같이 결정된다.

    • start 인수의 값이 양수인 경우, 검색은 오른쪽 방향으로 진행된다.
    • start 인수의 값이 음수인 경우, 검색은 왼쪽 방향으로 진행된다.
    • start 인수의 값이 문자열의 음수의 길이보다 작으면 문자열의 끝에서 검색이 시작된다.

    ANYALNUM 함수는 다음 중 하나에 해당하는 경우에 0 값을 반환한다.

    • 검색하는 문자를 찾을 수 없는 경우
    • start 인수의 값이 문자열 길이보다 큰 경우
    • start = 0의 값인 경우

     


    참 고

    문자를 발견하지 못하면, 0을 반환한다.
      - 만약 start값이 양이면, 오른쪽으로 검색한다.
      - 만약 start값이 음이면, 왼쪽으로 검색한다.
      - 만약 start값이 문자열의 length보다 큰 음수값이라면, 문자열의 끝에서 왼쪽으로 검색한다.
      - 문자를 발견 못했거나, start값이 문자열의 길이보다 더 큰 경우에는 0값을 반환한다.

     


    비 교

    ANYALNUM 함수는 문자열에서 영숫자(alphanumeric character)를 검색하고, NOTALNUM 함수는 문자열에서 영숫자가 아닌 문자를 검색한다.

     


    관련 함수

    함수명 함수내용
    ANYALNUM 영어와 숫자가 있는 문자에 대한 문자열을 검색하여, 영어와 숫자 문자의 첫 번째 위치를 반환한다.
    ANYALPHA 알파벳 문자에대한 문자열을 검색하여, 알파벳 문자열이 존재하는 첫번째 위치를 반환한다.
    ANYCNTRL 문자열을 검색하여 제어문자(control -특수)의 첫번째 위치를 반환한다.
    ANYDIGIT 문자열을 검색하여 숫자(DIGIT)의 첫번째 위치를 반환한다.
    ANYFIRST 문자열을 검색하여서 validvarname=v7하에서 SAS변수 이름에서 첫 번째 위치에 적합한 문자의 첫번째 위치를 반환한다.
    ANYGRAPH 문자열을 검색하여 그래픽 문자의 첫번째 위치를 반환한다.
    ANYLOWER 문자열을 검색하여 소문자의 첫번째 위치를 반환한다.
    ANYNAME 문자열을 검색하여서 validvarname=v7하에서 SAS변수 이름으로 유효한 문자의 첫번째 위치를 반환한다.
    ANYPRINT 문자열을 검색하여 인쇄가능한 문자의 첫번째 위치를 반환한다.
    ANYPUNCT 문자열을 검색하여 구두 문자의 첫번째 위치를 반환한다.
    ANYSPACE 문자열을 검색하여 공란 문자(Blank,가로탭,세로탭,Carriage Return,line feed,form feed등)의 첫번째 위치를 반환한다.
    ANYUPPER 문자열을 검색하여 대문자의 첫번째 위치를 반환한다.
    ANYXDIGIT 문자열을 검색하여 숫자를 재표현한 16진수 문자(1~10, a~f)의 첫번째 위치를 반환한다.
    NOTALNUM non-alphanumeric 문자(문자와 숫자를 제외)에 대한 문자열을 검색하여, 첫번째 위치를 반환한다.
    NOTALPHA non-alphabetic 문자(대소문 문자를 제외)에 대한 문자열을 검색하여, 첫번째 위치를 반환한다.
    NOTCNTRL 문자열을 검색하여 제어문자가 아닌 문자의 첫번째 위치를 반환한다.
    NOTDIGIT 문자열을 검색하여 digit가 아닌 첫번째 위치를 반환한다.
    NOTFIRST validvarname=v7하에서 변수 이름의 첫번째 위치에 올 수 없는 문자를 검색하여서 첫 번째 위치를 반환한다.
    NOTGRAPH non-graphical문자를 찾아서 첫 번째 위치를 반환한다.
    NOTLOWER 문자열을 검색하여 소문자가 아닌 문자의 첫번째 위치를 반환한다.
    NOTNAME validvarname=v7하에서 SAS변수이름에 올 수 없는 문자의 첫번째 위치를 반환한다.
    NOTPRINT non-printable 문자를 검색하여 첫번째 위치를 반환한다.
    NOTPUNCT 구두문자가 아닌 문자를 검색하여 첫번째 위치를 반환한다.
    NOTSPACE white-space(blank,가로탭,세로탭,캐리지 리턴, 라인 feed,form feed)가 아닌 문자를 검색하여 첫번째 위치를 반환한다.
    NOTUPPER 대문자가 아닌 문자의 첫번째 위치를 반환한다.
    NOTXDIGIT 16진수가 아닌 문자의 첫번째 위치를 반환한다.

     


    예 제 

    예 제 1 :

    String 변수에서 영문자와 숫자만을 추출하자. do until을 사용하여 반복작업을 통하여, anyalnum 함수를 통하여 영어문자와 숫자문자의 첫 번째 위치를 찾은 후에 substr함수를 통하여 각 문자를 추출한다. 

    SAS Statements
    data ANYALNUM1;
         string='Next = Last + 1;';
         j=0;
         do until(j=0);
            j = anyalnum(string,j+1);
            if j=0 then put +3 "That's all";
            else do;
              c = substr(string,j,1);
              put +3 j= c=;
            end;
         end;
    run;

     

    Results
    j=1 c=N
    j=2 c=e
    j=3 c=x
    j=4 c=t
    j=8 c=L
    j=9 c=a
    j=10 c=s
    j=11 c=t
    j=15 c=1
    That's all

     


    예 제 2 :

    다음 예제는 Anyalpha ,Anydigit, Anypunct, Anyspace 함수를 비교한다. 

     

    - Anyalpha : 알파벳이 존재하는 문자열의 첫 번째 위치를 반환한다. 즉, anyalpha(test)이 0보다 큰 경우 test변수에 알파벳이 존재함을 알 수 있다.

    - Anydigit   : 숫자값이 존재하는 숫자열의 첫 번째 위치를 반환한다. 즉, anydigit(test)이 0보다 큰 경우 test변수에 숫자값이 존재함을 알 수 있다.

    - Anypunct : 구두 문자가 존재하는 첫 번째 구두 문자의 첫번째 위치를 반환한다. 즉, anypunct(test)이 0보다 큰 경우 test변수에 구두문자가 존재함을 알 수 있다.

    SAS Statements
    DATA ANYALNUM2;
         INPUT TEST $5.;
         ALPHAS ='N'; DIGITS ='N';
         PUNCTUATION='N'; SPACE ='N';
         IF ANYALPHA(TEST) > 0 THEN ALPHAS = 'Y';
         IF ANYDIGIT(TEST) > 0 THEN DIGITS = 'Y';
         IF ANYPUNCT(TEST) > 0 THEN PUNCTUATION = 'Y';
         IF TRIM(ANYSPACE(TEST)) > 0 THEN SPACE = 'Y';
    DATALINES;
    12.34
    ABCD
    HELL0
    4,231
    ;

     

    Results
    test  Alphas  Digits  Punctuation  Space
    12.34    N       Y         Y         N
    abcd     Y       N         N         Y
    HELL0    Y       Y         N         N
    4,231    N       Y         Y         N

     


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

     

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

     

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


    2006년 백승민 제작하였답니다.  

    http://cafe.daum.net/statsas )

    반응형

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

    【SAS 함수】 7. ANYCNTRL 함수  (0) 2018.11.15
    【SAS 함수】 6. ANYALPHA 함수  (0) 2018.11.15
    [SAS 함수] 4. AIRY 함수  (0) 2018.11.15
    【SAS 함수】 3. ADDRLONG 함수  (0) 2018.11.15
    【SAS 함수】 2. ADDR 함수  (0) 2018.11.15

    댓글