ArtC wrote:
> This is a two pass process. First you need a list of
> distinct dates and then use that list with a macro
> %DO loop.
No. It doesn't have to be. With a moderate amount of data for each subset, it is easy to implement a one-pass solution using hash.
/* test data */
data one;
input date :date9. item :$1.;
cards;
01APR2010 A
01APR2010 B
01APR2010 C
05JUL2010 A
20JUL2010 E
;
run;
/* separate out to daily datasets. one-pass solution,
assuming that the data are already sorted by date. */
data _null_;
if 0 then set one; /* to prep pdv */
dcl hash h(ordered:'ascending');
h.definekey('id');
h.definedata('item');
h.definedone();
do until (last.date);
set one;
by date notsorted;
id + 1;
h.add();
end;
name = catt("item_", put(date,date9.));
h.output(dataset: name);
run;
/* on log
NOTE: The data set WORK.ITEM_01APR2010 has 3 observations and 1 variables.
NOTE: The data set WORK.ITEM_05JUL2010 has 1 observations and 1 variables.
NOTE: The data set WORK.ITEM_20JUL2010 has 1 observations and 1 variables.
*/
... View more