数据集A,3个变量:股票代码(code)、成交时间(date)、成交金额(volume),如:
000001 200203 5200
000001 200204 8100
000001 200205 3600
...
000002 200203 3300
000002 200204 4500
000002 200205 6700
...
现在想根据数据集A所有股票的成交金额确定2个分位点(0.1,0.9),将数据集A分为三组,然后对每只股票分别求三组(低、中、高)的样本数、总成交金额,我自己写的程序如下:
proc univariate data=a;
var volume;
output out=a_pct pctlpre=p pctlpts=(10 90);
run;
data b;
set a;
if _n_=1 then set a_pct;
if volume<=p10 then group1=1;
else if volume>p90 then group1=3;
else group1=2;
run;
proc sql;
create table result as
select count(group1) as num, sum(volume) as sumv from b
group by code group1;
quit;
run;
我给的例子是每个月的,但我的实际数据是每天的,数据量特别大,但上面的程序太慢了,哪位高手帮我改个快捷一点的程序?