Skip to content
9to5sas
  • Index
  • Glossary
Facebook Twitter Instagram Email RSS

  • Start Here
  • Base SAS
  • Advanced SASExpand
    • SAS Macros
    • PROC SQL
  • SAS/STATSExpand
    • SAS Analytics
    • Statistics
  • SAS Programs
9to5sas

9to5sas » SAS PROGRAMS » Generate all permutations of elements in SAS

Generate all permutations of elements in SAS

BySubhro Posted onMarch 30, 2021August 4, 2021 Last Updated:August 4, 2021
0 Comments

To Generate all permutations of elements in SAS, use the FACT function then determine the permutation using the CALL ALLPERM.

Generate all permutations of elements in SAS

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 <a href="https://documentation.sas.com/?cdcId=vdmmlcdc&cdcVersion=8.1&docsetId=lefunctionsref&docsetTarget=p17pfkttmfknqvn1wjr33oyz9yu6.htm&locale=en">FACT</a> function then determines the permutation using the CALL ALLPERM.

<a href="https://documentation.sas.com/?docsetId=lefunctionsref&docsetTarget=p0nqrwr48k3lsyn1rtv28qvr7feh.htm&docsetVersion=3.2&locale=en">CALL ALLPERM</a> and <a href="https://www.9to5sas.com/character-function-in-sas/">CATS</a> function are new in SAS 9.0.

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;

Output:

Generate all permutations of elements in SAS

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] $3 ('a' 'b' 'c');
	array h[3] $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;

Output:

Generate all permutations of elements in SAS

 

Every week we'll send you SAS tips and in-depth tutorials

JOIN OUR COMMUNITY OF SAS Programmers!

Check your inbox or spam folder to confirm your subscription.

Post Tags: #permutations and combinations in sas#permutations in sas
Subhro

Subhro Kar is an Analyst with over five years of experience. As a programmer specializing in SAS (Statistical Analysis System), Subhro also offers tutorials and guides on how to approach the coding language. His website, 9to5sas, offers students and new programmers useful easy-to-grasp resources to help them understand the fundamentals of SAS. Through this website, he shares his passion for programming while giving back to up-and-coming programmers in the field. Subhro’s mission is to offer quality tips, tricks, and lessons that give SAS beginners the skills they need to succeed.

Facebook Twitter Linkedin

Post navigation

Previous Previous
How to Copy a file with SAS?
NextContinue
Append records to an existing file in SAS

SAS Tips in your inbox

Subscribe to 9to5sas for timely SAS tips and news delivered each month.
Learn about the latest articles, and code samples to keep your SAS skills fresh!

Your subscription is successful!

Recent Posts

  • Concatenate strings in SAS: The CAT Functions Demystified
  • 5 Techniques for Quickly Removing Leading Zeros in SAS
  • Troubleshoot Your Proc SQL Code Like a Pro with These 7 Automatic Macro Variables
  • 7 PROC SQL Options You Should Use to Debug Queries
  • How To Use The SAS Proc SQL Order By Statement?
9to5sas
  • Privacy Policy
  • Disclaimer
  • About
  • Contact
Facebook Twitter Instagram RSS Email Pinterest

Copyright © 2023 9TO5SAS, All rights reserved.

Scroll to top
  • 9to5sas Blueprint
  • About
  • About
  • Acceptable use policy
  • calculator
  • Confirm email
  • Contact
  • Contact
  • Cookie Policy
  • DISCLAIMER
  • Getting Started with SAS
  • Glossary
  • Index
  • Post #13801
  • Privacy Policy
  • Privacy policy
  • SAS Programs
  • Styles
  • Subscription confirmed
  • Terms and conditions
  • Thank You