Randomly select character values for each observation

In the example dataset – SASHELP.HEART, you want to create a new variable – Activity_status and assign one of three values of (‘High’, ‘MEDIUM’, ‘LOW’), at random to each observation. You can achieve these using 2 methods.

Method 1: Using an array

data heart(drop=id _1-_3 keep=status sex bp_status chol_status activity_status);
	set sashelp.heart(obs=10);
	array _{3} $ ('Low', 'Medium', 'High');
	id=rand('integer', 1, dim(_));

The above method uses an array to hold the three-character values and creates three character variables – _1,_2,_3.  The next statement  id=rand('integer',1,dim(_))  creates a variable holding random numbers between 1 and 3 and then activity_status variable is used to assign the corresponding values.

Randomly select character values for each observation

Method 2: Using CHOOSEC function

data heart (keep=status sex bp_status chol_status activity_status);
	set sashelp.heart;
	activity_status=choosec(ceil(ranuni(0)*3), "High", "Medium", "Low");

The first argument of the CHOOSEC function is a numeric value that specifies which character value to choose in the list of arguments that follow.

One way to generate a random integer from 1 to n is to first use the RANUNI function to generate a random value between 0 and 1. Next, you multiply this value by n to generate a random number between 0 and n.

Finally, the CEIL function rounds up positive numbers to the next highest integer.

For example, if the random function generates a value of .1, 3 times .1 = .3. This, rounded to the next highest integer, gives you a 1. An alternative expression for a random integer from 1 to n is (int(ranuni(0)*3 + 1).

Once you have generated a random integer from 1 to 3, the CHOOSEC function will return the name corresponding with that selection. Randomly select character values for each observation

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


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.