Permutation: Permutation can simply be defined as the several ways of arranging few or all members within a specific order. It is the process of legibly arranging from chaos. This is what is termed a Permutation.
To Generate all permutations of elements in SAS, use the FACT function then determine the permutation using the CALL ALLPERM.
data ex1; drop i perms x1-x3; array x (3) $3 ('a' 'b' 'c'); length perm $3; perms=fact(3); do i=1 to perms; call allperm(i, of x(*)); perm=cats(of x(*)); output; end; run; proc print; run;
Combination: The combination is a process of selecting the objects or items from a set or the collection of objects, such that (unlike permutations) the order of selection of objects does not matter. It refers to the combination of N things taken from a group of K at a time without repetition.
data test(drop=x1-x3 h1-h3); array x $3 ('a' 'b' 'c'); array h $3; n=dim(x); do k = 1 to 3; ncomb=comb(n,k); call sortc(of x(*)); call missing(of h(*)); do j=1 to ncomb; rc=allcomb(j,k,of x[*]); if rc<0 then leave; do i= 1 to k; h[i]=x[i]; end; allcombns=cats(of h(*)); output; end; end; drop i j k n ncomb rc; run; proc print;