본문 바로가기
SAS/SAS 함수

【SAS 함수】 ALLPERM 함수

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

포스팅 목차

    o  ALLPERM 함수

     


    ALLPERM 함수는 지정한 변수에 대하여 최소한으로 순서를 변경하여서 생성 가능한 모든 순열을 생성한다.

    Category: 조합생성함수

     



    ALLPERM
    (count, variable-1 <,variable-2 … variable-n> )

     

    Arguments

    • count

    반복문에서 전달 받은 인수로 1부터 생성해야 되는 변수 순열의 개수 사이에 속하는 정수 값이 할당되어 있는 변수를 지정한다. 변수 순열의 개수는 FACT 함수로 계산 될 수 있다.

    • variable

    숫자 변수를 동일하게 지정하거나, 동일한 길이로 구성된 문자 변수를 지정한다. 이 변수들이 순서를 변경하여 재배치된다. , 18개 변수까지 지정할 수 있다.

    • 반환되는 값

    count 값이 1이면 0의 값이 반환되고, count 값이 N!보다 크면 1의 값이 반환된다. 변수-j와 변수-k의 위치가 변경이 변경되면 변수-j의 위치가 반환된다. (K=J+1)

     


    상세 내용

    ALLCOMB 함수를 반복문에서 사용하여 개별 반복에서 ALLPERM 함수의 첫 번째 인수가 1부터 순열의 개수까지의 모든 정수값을 차례로 받아들이도록 반복문을 작성한다. 반복문의 첫 번째 실행에서 인수의 종류와 길이가 일관성이 있는지 확인한다. 이후에는 반복 작업이 실행될 때마다 두 변수의 값을 교환하여 순열을 생성한다.

    참고 : 순열의 개수는 PERM 함수를 사용하여 계산할 수 있다. 상세한 내용은 PERM 함수를 참조하시오. ALLPERM 함수에서는 다음 값이 반환된다.

    • count = 1 인 경우 0을 반환한다.
    • variable-Jvariable-K 의 값이 서로 교환되는 경우에는 j를 반환한다. ( K=J+1 )
    • count > N! 인 경우 -1 을 반환한다.

    ALLPERM 함수를 반복문에서 사용할 때 첫 번째 인수를 순서대로 적용하지 않으면 유용한 결과를 얻지 못할 수 있다. 예를 들어, 변수를 초기화한 직후 첫 번째 인수로 K를 지정하여 ALLPERM 함수를 실행하면, K번째 순열 결과와 상이한 결과를 반환한다.(K가 1인 경우 제외). K번째 순열을 얻으려면, 첫 번째 인수에 1부터 K까지의 값을 정확한 순서로 전달받아 처리하여 ALLPERM 함수를 K번 실행해야 한다.

    ALLPERM 함수는 일부 변수의 값이 동일하거나 결측치 값이 있는 경우에도 항상 N! 개의 순열을 생성한다. 동일한 값이 있을 때 중복되지 않는 순열만 생성하거나 순열에서 결측치 값을 제외하려면 LEXPERM 함수를 대신 사용하라.

     


    비 교

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

    • ALLPERM 함수는 여러 변수의 결측치 값 또는 비결측치 값의 가능한 모든 순열을 생성한다. 개별 순열은 이전 조합에서 2개의 연속된 값의 위치를 교환하는 방식으로 이전 순열을 기반으로 형성된다.
    • LEXPERM 함수는 여러 변수의 비결측치 값에 대한 중복되지 않는 모든 순열을 생성한다. 순은 사전식 순서대로 생성된다.
    • LEXPERK 함수는 N개의 변수의 비결측치 값 중에서 K개의 중복되지 않은 모든 순열을 생성한다.

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

     


    관련 함수

    함수명 함수내용
    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 [4] $3 ('ant' 'bee' 'cat' 'dog'); 
       n=dim(x);
       nfact=fact(n); 
       do i=1 to nfact+1;   
          change=allperm(i, of x[*]);
          put i 5. +2 change +2 x[*];
       end;
    run;

     

    Results
        1  0   ant bee cat dog
        2  3   ant bee dog cat
        3  2   ant dog bee cat
        4  1   dog ant bee cat
        5  3   dog ant cat bee
        6  1   ant dog cat bee
        7  2   ant cat dog bee
        8  3   ant cat bee dog
        9  1   cat ant bee dog
       10  3   cat ant dog bee
       11  2   cat dog ant bee
       12  1   dog cat ant bee
       13  3   dog cat bee ant
       14  1   cat dog bee ant
       15  2   cat bee dog ant
       16  3   cat bee ant dog
       17  1   bee cat ant dog
       18  3   bee cat dog ant
       19  2   bee dog cat ant
       20  1   dog bee cat ant
       21  3   dog bee ant cat
       22  1   bee dog ant cat
       23  2   bee ant dog cat
       24  3   bee ant cat dog
       25  -1   bee ant cat dog

     


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

     

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

     

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

     

    MS Bing Image Creator 생성 이미지

    반응형

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

    【SAS 함수】 CALL LEXPERK 루틴  (0) 2023.06.16
    【SAS 함수】 CALL ALLCOMB 함수  (0) 2023.06.16
    【SAS 함수】 ALLCOMB 함수  (0) 2023.06.16
    【SAS 함수】 473. ZIPNAMEL  (0) 2023.05.28
    【SAS 함수】 474. ZIPSTATE  (0) 2021.10.18

    댓글