Solved
Contributor
Posts: 60

# How Do I generate Random Numbers, but evenly between groups

In my dataset from an actual clinical trial, I have 64 ID numbers (numbered 1 to 64), where 32 goes to treatment group A and 32 goes to treatment B and a score (outcome)

So I want to add a hypothetical variable where I want to generate a variable (let's call it Gender/Sex, so 2 levels)  that is sex is evenly and randomly distributed within each group (16 males and 16 females per treatment group). How do I do this randomly?

Accepted Solutions
Solution
‎05-01-2015 09:52 AM
Valued Guide
Posts: 864

## Re: How Do I generate Random Numbers, but evenly between groups

If you use survey select you can name your strata:

proc surveyselect data='trial' method=srs n= 'sample size'

seed= 'number' out='trial sample;

strata  "enter strata here, gender sex with no column, try both and see what gives you the desired output"

run;

I put everything you'll need to type in quotes.  Hope this helps.

All Replies
Super User
Posts: 9,599

## Re: How Do I generate Random Numbers, but evenly between groups

Well, that statisticians out there probably have the best answers for this.  My way would be:

data want;

call streaminit(123);

set have;

male_cnt=0;

female_cnt=0;

if rand("uniform") <0.5 then do;

if male_cnt <16 then do;

sex="male";

male_cnt=male_cnt+1;

end;

else do;

sex="female";

female_cnt=female_cnt+1;

end;

else do;

/* same as above but reveresed */

end;

run;

Probably a bit simplistic and not so random, but if it doesn't matter too much...

Solution
‎05-01-2015 09:52 AM
Valued Guide
Posts: 864

## Re: How Do I generate Random Numbers, but evenly between groups

If you use survey select you can name your strata:

proc surveyselect data='trial' method=srs n= 'sample size'

seed= 'number' out='trial sample;

strata  "enter strata here, gender sex with no column, try both and see what gives you the desired output"

run;

I put everything you'll need to type in quotes.  Hope this helps.

Contributor
Posts: 60