|
|
沙发

楼主 |
发表于 2003-9-29 11:11:29
|
只看该作者
data a;
input stkcd period income;
cards;
600894 20021231 1.0658
600895 19961231 2.698389
600895 19971231 3.556099
600895 19981231 8.842632
600895 19991231 4.895948
600897 19961231 0.122733
600897 19971231 4.770631
600897 19981231 1.82459
600897 19991231 3.911963
600897 20001231 3.56962
600897 20011231 3.952757
;
run;
proc sort data=a;
by stkcd period;
data d;
set a;
retain restkcd reperiod reincome pr 0 pstk '600894 ';/*第一个股票代码*/
drop restkcd reperiod reincome pr pstk ;
if pstk<>stkcd then do;/*不同股票进行初始化*/
pr=0;
pstk=stkcd;
end;
if income>=1 then do ;
if pr=0 then do;/*前一个符合*/
output ;
end ;
else if pr=1 do;
/*前一个不符合,结果保留*/
restkcd=stkcd;
reperiod=period;
reincome=income;
pr=2;
end ;
else if pr=2 do;/*前二个不符合,前一个符合,加载前一个*/
output;
stkcd=restkcd;
period=reperiod;
income=reincome;
output;
pr=0;
end ;
end;
else do;
pr=1;
end;
run;
----------------------------------------------
本人有段时间没有写BASE,手有些生疏,可能错误百出.现在也没有环境.无法进行测试,只能凭感觉写下了上面代码,那位有环境的仁兄帮助测试一下,在此感谢了.
问题的解决其实就是去掉不符合的记录和夹在两个不符合记录当中的符合记录,有点绕嘴.
这个论坛怎么没有处理空格呀,这看起来多别扭呀. |
|