Below code is eventually doing what you're after. It would really help if you could post a data step creating representative sample data, explain what you want to achieve and then also post a desired output. data have; format date date9. code $8. price comma20.4; input code $ price :comma. check $1.; date='01jan2014'd + _n_ -1; datalines; ISIL 18.7800 1 ISIL 10.7900 0 ISIL 18.7800 1 ISIL 18.7900 1 ISIL 18.8000 1 ISIL 18.8100 1 ISIL 18.8200 1 ISIL 18.8700 1 ISIL 18.8900 1 ISIL 18.9100 1 ISIL 18.9200 1 ISIL 18.9300 1 ISIL 18.9400 1 ISIL 18.9600 1 ISIL 18.9800 1 ISIL 10.9800 0 ISIL 18.7800 1 ISIL 18.7900 1 ISIL 18.8000 1 ISIL 18.8100 1 ISIL 18.8200 1 ISIL 18.8700 1 ISIL 18.8900 1 ISIL 18.9100 1 ISIL 10.9200 0 ISIL 18.9300 1 ISIL 18.9400 1 ISIL 18.9600 1 ISIL 18.9800 1 XXXX 19.9800 1 ; run; proc sort data=have; by code date; run; data inter; set have; by code; prev_price=lag(price); if first.code then do; call missing(prev_price); counter=0; serie+1; end; if price> prev_price then counter+1; else do; counter=1; serie+1; end; run; /* only wanted series */ proc sql; create table want_selected as select * from inter group by code, serie having max(counter)>=10 order by code, date ; quit; /* all series but with serie_wanted_flag added */ proc sql; create table want_all as select *, max(counter)>=10 as serie_wanted_flag from inter group by code, serie order by code, date ; quit;
... View more