본문 바로가기
SAS/SAS 함수

【SAS 함수】 ALLCOMB 함수

by 기서무나구물 2023. 6. 16.

포스팅 목차

    o  ALLCOMB 함수

     


    ALLCOMB 함수는 지정한 변수에 대한 조합 순서를 최소한으로 변경하여서 n개 변수 중에서 한 번에 k개 변수를 선택하는 모든 조합을 생성한다. 일반적으로 DO 반복문과 함께 사용된다.

    Category: 조합생성함수

     



    ALLCOMB
    (count, k, variable-1, ... , variable-n)

    Arguments

    Required Arguments

         count

           반복문에서 전달받은 인수로 1부터 생성해야 되는 변수 조합의 개수까지의 값이 할당되어 있는 변수를 지정한다. 변수 조합의 개수는 COMB 함수로 계산 할 수 있다.

         k

            개별 조합에서 선택되는 항목의 개수를 표시한다. 이 값은 상수, 변수 또는 표현식으로 지정할 수 있다. (해당 값은 1에서 n 사이에 존재.)

         variable

           동일한 길이를 가지는 수치형 변수 또는 문자형 변수를 지정한다. 이 변수들이 순서를 변경하여 순열 방식으로 재배치된다.

    제한사항 33개 이하의 항목을 지정 할 수 있다. 33개 이상의 항목 조합을 생성해야 하는 경우 CALL ALLCOMBI 루틴을 사용해야 한다.
    필요사항 ALLCOMB 함수를 실행하기 전에 이 변수들을 초기화 해야한다.
    Tip ALLCOMB 함수를 실행하면, 처음 k개의 변수는 하나의 조합 값으로 포함된다.
    • 반환되는 값

    처음 실행 시에는 0의 값이 반환되고, 모든 조합이 생성되면 -1의 값이 반환된다. 변수-i와 변수-j의 값이 변경되면, 변수-i의 위치가 반환된다.(i<j)

     


    상세 내용

    ALLCOMB 함수를 반복문에서 사용하여 개별 반복에서 ALLCOMB 함수의 첫 번째 인수가 1부터 조합의 수까지의 모든 정수값을 차례로 받아들이도록 반복문을 작성한다. 이때 k는 조합의 원소의 개수를 나타내는 상수이며 반복문 내에서 동일하게 유지되도록 프로그램을 구현한다. 조합의 개수는 COMB 함수를 사용하여 계산할 수 있다. 반복문의 첫 번째 실행에서 인수의 종류와 길이가 일관성이 있는지 확인하고, 이후에는 반복 작업이 실행될 때마다 두 변수의 값을 교환하여 조합을 생성한다.

    ALLCOMB 함수에서는 다음과 같은 작업을 수행한다.

    • ALLCOMB 함수는 첫 번째 반복 작업을 수행하는 경우 0을 반환한다.
    • variable-i 인수와 variable-j 인수의 값이 서로 위치를 변경하는 경우( i < j ), ALLCOMB 함수는 i 를 반환한다.
    • 모든 조합이 이미 생성되어서 더 이상 위치를 교환 할 변수의 값이 없는 경우 ALLCOMB 함수는 -1을 반환한다.

    ALLCOMB 함수를 반복문에서 실행할 때 첫 번째 인수를 순서대로 적용하지 않으면 유용한 결과를 얻지 못할 수 있다. 특히, 변수를 초기화하고 즉시 첫 번째 인수에 j 를 지정하여 ALLCOMB 함수를 실행하면 j 번째 조합을 생성하지 못한다 ( j 가 1인 경우 제외). j 번째 조합을 얻으려면 첫 번째 인수로 1부터 j 까지의 값을 정확한 순서로 전달받아 처리하여 ALLCOMB 함수를 j 번 실행해야 한다.

     


    비 교

    SAS는 조합을 생성하기 위해서 4개의 함수 또는 CALL 루틴을 제공한다.

    • ALLCOMB 함수는 N개의 변수의 결측치 값 또는 비결측치 값의 가능한 모든 조합을 생성한다. 값은 수치형 또는 문자형 값이 될 수 있다. 개별 조합은 이전 조합에서 하나의 값을 삭제하고 다른 값을 삽입하여 구성된다.
    • LEXCOMB 함수는 여러 변수의 비 결측치 값에 대한 중복되지 않은 모든 조합을 생성한다. 값은 수치형 또는 문자형 값이 될 수 있다.  조합은 사전식 순서대로 생성된다.
    • ALLCOMBI 함수는 N개 항목의 indices 의 모든 조합을 생성한다. 여기서 indices 인수는 1에서 N까지의 정수값이다. 각 조합은 이전 조합에서 하나의 인덱스를 삭제하고 다른 인덱스를 삽입하는 방식으로 이전 조합을 기반으로 형성된다.
    • LEXCOMBI 함수는 N개 항목에 대한 인덱스의 모든 조합을 생성한다. 여기서 인덱스는 1에서 N까지의 정수값이다. 조합은 사전식 순서대로 생성된다.

    ALLCOMBI 함수는 이와 유사한 함수와 CALL 루틴 중에서 가장 빠른 함수이다. 가장 느린 함수는 LEXCOMB 함수이다.

     


    관련 함수

    함수명 함수내용
    ALLCOMB 지정한 변수에 대한 조합 순서를 최소한으로 변경하여서 n개 변수 중에서 k개 변수를 선택하는 모든 조합을 생성한다. 일반적으로 DO 반복문과 함께 사용된다.
    ALLPERM 지정한 변수에 대하여 최소한으로 순서를 변경하여서 생성 가능한 모든 순열을 생성한다.
    CALL ALLCOMB 변수에 대한 조합 순서를 최소한으로 변경하여서 n개 변수 중에서 k개 변수를 선택하는 모든 조합을 생성한다. 일반적으로 DO 반복문과 함께 사용된다.
    CALL ALLPERM 최소한으로 순서 변경으로 지정된 변수들의 위치를 변경하여서 배치가 가능한 모든 순열값을 생성하여서 반환을 한다.
    CALL RANPERK 인수의 값을 랜덤하게 순열배치하거나, n개 중에서 k개 순열을 반환한다.
    CALL RANPERM 지정한 인수의 값을 대상으로 임의의 순열을 랜덤하게 생성하여 반환한다.
    CALL LEXPERK
    변수에 대한 순열 순서를 사전식으로 정렬하여서 n개 변수 중에서 k개의 변수를 중복되지 않게 구성하는 모든 고유 순열을 생성한다. 
    CALL LEXPERM 여러 변수 중에서 결측치가 아닌 변수로 중복되지 않게 생성 가능한  모든 고유 순열을 사전식으로 정렬하여서 생성한다.
    LEXPERK
    변수에 대한 순열 순서를 사전식으로 정렬하여서 n개 변수 중에서 k개의 결측치가 아닌 값을 선택하는 모든 고유 순열을 생성한다.
    LEXPERM 여러 변수 중에서 결측치가 아닌 값으로 생성 가능한 모든 고유 순열을 사전식 정렬로 생성한다.

     


    예 제

    SAS Statements
    data _null_;
       array x[5] $3 ('ant' 'bee' 'cat' 'dog' 'ewe');
       n=dim(x);
       k=3;
       ncomb=comb(n, k);
       do j=1 to ncomb+1;
          rc=allcomb(j, k, of x[*]);
          put j 5. +3 x1-x3 +3 rc=;
       end;
    run;

     

    Results
        1   ant bee cat    rc=0
        2   ant bee ewe    rc=3
        3   ant bee dog    rc=3
        4   ant cat dog    rc=2
        5   ant cat ewe    rc=3
        6   ant dog ewe    rc=2
        7   bee dog ewe    rc=1
        8   bee dog cat    rc=3
        9   bee ewe cat    rc=2
       10   dog ewe cat    rc=1
       11   dog ewe cat    rc=-1

     


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

     

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

     

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

     

    MS Bing Image Creator 생성 이미지

     

    반응형

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

    【SAS 함수】 CALL ALLCOMB 함수  (0) 2023.06.16
    【SAS 함수】 ALLPERM 함수  (0) 2023.06.16
    【SAS 함수】 473. ZIPNAMEL  (0) 2023.05.28
    【SAS 함수】 474. ZIPSTATE  (0) 2021.10.18
    【SAS 함수】 472. ZIPNAME  (0) 2021.10.18

    댓글