Making subsets using proc sql
From sasCommunity
2008-Jul-08 RJF2 see also Split Data into Subsets
%*Split Data into subsets
based on value of one character variable;
%Let Data = sashelp.class;
%Let Var = sex;%*character variable;
%*task 1: make unique list of values;
PROC Sort data = &Data.
(keep = &Var.)
out = Values
nodupkey;
by &Var. ;
%*task 2: make unique strings for one-to-many;
PROC SQL print;
select &Var. as ListData
,cat('when ("' , &Var.
,'") output ', &Var. ,';')
as ListWhen
into :ListData separated by ' '
,:ListWhen separated by ' '
from Values;
quit;
%Put _global_;
%*task 2: read data, make many subsets;
DATA &ListData.;
do until(EndoFile);
set &Data. end = EndoFile;
select(&Var.);
&ListWhen.
otherwise;
end;
end;
stop;
run;
log:
21 %Put _global_;
GLOBAL LISTWHEN when ("F") output F; when ("M") output M;
GLOBAL LISTDATA F M
...
NOTE: There were 19 observations read from the data set SASHELP.CLASS.
NOTE: The data set WORK.F has 9 observations and 5 variables.
NOTE: The data set WORK.M has 10 observations and 5 variables.
proc sql output:
List
Data ListWhen
---- -------------------
F when ("F") output F;
M when ("M") output M;
- This page was last modified 15:46:45, 2007-04-30.
- This page has been accessed 183 times as of 2008-Jul-08
