A hash variety: data one; input member site start :anydtdtm19.; obs = _n_; cards; 3304 6747 01JUN2012:05:32:00 3304 6747 01JUN2012:05:32:00 3304 6990 01JUN2012:05:32:00 3304 6747 01JUN2012:05:39:00 3304 6747 01JUN2012:07:28:00 3304 6747 01JUN2012:07:28:00 3304 7254 01JUN2012:07:28:00 3304 47814 01JUN2012:07:28:00 3304 6747 01JUN2012:07:29:00 3304 6747 01JUN2012:07:29:00 3304 6990 01JUN2012:07:29:00 5569 7254 01JUN2012:07:29:00 5569 7254 01JUN2012:07:30:00 5569 6747 01JUN2012:08:15:00 5569 6747 01JUN2012:08:15:00 5569 6748 01JUN2012:08:16:00 5569 6748 01JUN2012:08:16:00 5569 6747 01JUN2012:09:14:00 5569 6747 01JUN2012:09:14:00 5569 6747 01JUN2012:09:14:00 ; run; data _null_; if(1=2) then set one; length sequence 8; declare hash seq(ordered:"a"); rc1=seq.defineKey("member", "site", "start"); rc2=seq.defineData("sequence"); rc3=seq.defineDone(); declare hash want(ordered:"a"); rc1=want.defineKey("obs","member", "site", "start"); rc2=want.defineData("obs","member", "site", "start","sequence"); rc3=want.defineDone(); sequence=0; do until(done1); set one end=done1; by member site notsorted; rc1=seq.add(); x=first.site; if first.member then sequence=0; sequence=sequence+((rc1=0)*x); rc2=seq.replace(); end; call missing(of _all_); do until(done2); set one end=done2; seq.find(); want.add(); end; want.output(dataset:"sequenced"); stop; run;
... View more