BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
at803535
Calcite | Level 5

 

 

I have no idea how to get started on this. I was thinking of creating an array with DO LOOPS to get the observation but not sure 

where to start it as I am very new to SAS.

 

Please let me know if you need anything else. I will be attaching a sample of my code soon.

 

Thanks!

1 ACCEPTED SOLUTION

Accepted Solutions
PeterClemmensen
Tourmaline | Level 20

I would probably do this in two distinct PROC SURVEYSELECT steps like below.

 

I made example data set from sashelp.cars and made arbitrary mileage categories for demonstration purposes

 

data cars;
	set sashelp.cars;
	length mileage $20;
	if mpg_city<16 then mileage='Bad';
	else if 16<=mpg_city<25 then mileage='Fair';
	else if 25<=mpg_city<30 then mileage='Good';
	else mileage='Excellent';
	do i=1 to 100; output; end;
	drop i;
run;

proc sort data=cars;
	by mileage;
run;

proc surveyselect data=cars out=sample1 method=srs n=200 noprint;
	where mileage in ('Bad', 'Excellent');
	strata mileage;
run;

proc surveyselect data=cars out=sample2 method=srs samprate=0.01 noprint;
	where mileage in ('Fair', 'Good');
	strata mileage;
run;

data finalsample;
	set sample1 sample2;
run;

 

View solution in original post

3 REPLIES 3
Reeza
Super User

Try PROC SURVEYSELECT

 

 

PGStats
Opal | Level 21

Look at the strata statement and the Secondary input dataset feature of proc surveyselect.

PG
PeterClemmensen
Tourmaline | Level 20

I would probably do this in two distinct PROC SURVEYSELECT steps like below.

 

I made example data set from sashelp.cars and made arbitrary mileage categories for demonstration purposes

 

data cars;
	set sashelp.cars;
	length mileage $20;
	if mpg_city<16 then mileage='Bad';
	else if 16<=mpg_city<25 then mileage='Fair';
	else if 25<=mpg_city<30 then mileage='Good';
	else mileage='Excellent';
	do i=1 to 100; output; end;
	drop i;
run;

proc sort data=cars;
	by mileage;
run;

proc surveyselect data=cars out=sample1 method=srs n=200 noprint;
	where mileage in ('Bad', 'Excellent');
	strata mileage;
run;

proc surveyselect data=cars out=sample2 method=srs samprate=0.01 noprint;
	where mileage in ('Fair', 'Good');
	strata mileage;
run;

data finalsample;
	set sample1 sample2;
run;

 

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 3 replies
  • 1374 views
  • 0 likes
  • 4 in conversation