Hi Experts,
I need to create an automation system for creating subsets based on number of observations present in master dataset. For example: if my master dataset has 100 observations, I need to create 4 subsets each having 25 observations. I am unable to think of a logic. If my master dataset has 200 observations then I need to create 4 datasets of 50 observations each. Please help me in writing this logic.
Thank you,
Gurpreet
Get number of observations, then run code, e.g:
proc sql noprint; select nobs/4 into :cnt from dictionary.tables where libname="<yourlib>" and memname="<yourdataset>"; quit; data want1 want2 want3 want4; set <yourlib>.<yourdataset>; if _n_ < (1 * &cnt.) then output want1; else if _n_ < (2 *&cnt.) then output want2; ...; run;
If your data source is a SAS data set, you can pull the number of observations and divide them up in the same step:
data subset1 subset2 subset3 subset4;
set have nobs=_nobs_;
if _n_ <= _nobs_ / 4 then output subset1;
else if _n_ <= _nobs_ / 2 then output subset2;
else if _n_ <= _nobs_ * 3 / 4 then output subset3;
else output subset4;
run;
proc surveyselect data=sashelp.air out=want group=4;
run;
Nice, I always forget the surveyselect function - even though I posted on it some time back myself 🐵
ME TOO !
remember and forget something everyday .
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.