BookmarkSubscribeRSS Feed
rohithverma
Obsidian | Level 7

have input dataset  like 

 

DATA K;
INPUT city:$ ;
DATALINES;
a
a
a
a
a
b
b
b
;
RUN;

 

i need output like 

 

DATA r;

set k;

city seq;
a 1
a 1
a 1
a 1
a 1
b 2
b 2
b 2
;
RUN;

1 REPLY 1
PeterClemmensen
Tourmaline | Level 20

If your data is sorted by city, then simply do

 

data r;
    set k;
    by city;
    if first.city then seq+1;
run;

 

If not then do

 

data r;
  if _n_=1 then do;
    dcl hash h();
    h.defineKey ("city");
    h.defineData ("seq");
    h.defineDone ();
  end;
 
  set K;

  if h.find() ne 0 then do;
     seq+1;h.add();
  end;
run;