Randomly select character values for each observation1 min read

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 1

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.

</code> <img class="size-full wp-image-8581  aligncenter" src="https://www.9to5sas.com/wp-content/uploads/2021/02/img_60178c2a56674.png" alt="" />


Notify of

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Inline Feedbacks
View all comments
Would love your thoughts, please comment.x
Scroll to Top