Hi @Sachin6816,
I think the ALLOC= option of the STRATA statement applied to two stratum variables (var1, var2) is the solution in your case.
Here's a complete example including the creation of test datasets HAVE1, whose var1 and var2 proportions you want to match, and HAVE2, from which you want to draw the random sample (without replacement), stratified by var1 and var2:
/* Create example data for demonstration */
data have1 have2;
set sashelp.heart;
var1=byte(64+whichc(first(BP_Status),'H','N','O')); /* --> values 'A', 'B', 'C' */
var2=(status='Dead'); /* --> values 0, 1 */
if _n_<=2000 then output have1; /* 2000 obs. */
else output have2; /* 3209 obs. */
run;
proc sort data=have2;
by var1 var2;
run;
/* Determine target proportions of (VAR1, VAR2) combinations (A,0), (A,1), (B,0), (B,1), (C,0), (C,1) */
proc freq data=have1;
tables var1*var2 / out=targetprops(drop=count rename=(percent=_alloc_));
run;
/* Draw random sample of size n=1000 from HAVE2 using stratum allocation proportions from HAVE1 */
proc surveyselect data=have2
method=srs n=1000
seed=2718 out=want;
strata var1 var2 / alloc=targetprops;
run;
/* Compare frequency distribution of (VAR1, VAR2) combinations between dataset HAVE1 and the sample */
title 'Dataset HAVE1';
proc freq data=have1;
tables var1*var2;
run;
title 'Sample from HAVE2';
proc freq data=want;
tables var1*var2;
run;
title;
Hint: To get faster and potentially better replies it's recommended to start a new thread for a new question (even if similar to an old question, which you could always refer to with a link). Thus you reach the largest possible audience and not only those who look into old threads. Also, later readers would not be confused about what question is being answered.
... View more