jeozu 发表于 2014-5-2 17:42 
给出一个你要的报表的最终格式。。
其实我想写的是一个动量策略的代码。我想对以上的数据进行排序,选出前四和后四个商品期货,然后持有前四种期货,卖出后四种期货,构建投资组合。
所以我需要的是先对某个月的数据排序,如上,用max数据集和min数据集选出前四个后四个商品期货,然后用sql,用max和min选出另一个收益数据集中对应月份对应品种期货的收益率。
proc sort data=return1.finished out=c;/*选择前四种和后四种商品期货*/
by _2010N01N01;
run;
data c1;
set c;
retain t 0;
if _2010N01N01^='.' then t=t+1;
if 0<t and t<=4 then min=_name_;
if min='' then delete;
keep min;
run;
proc sort data=return1.finished out=d;
by descending _2010N01N01;
run;
data d1;
set d;
if _n_<=4 then max=_name_;
if max='' then delete;
keep max;
run;
data e;
set return1.finished;
keep _name_ _2010N02N01;
run;
proc sql;
create table min as
select * from c1 ,e
where c1.min=e._name_;
quit;
proc means data=min noprint;
var _2010N02N01;
output out=min1 mean=mean;
quit;
proc sql;
create table max as
select * from d1,e
where d1.max=e._name_;
quit;
proc means data=max noprint;
var _2010N02N01;
output out=max1 mean=mean;
quit;
data full;
set min1 max1;
t=mean-lag(mean);
if t='.' then delete;
run;
但是这是一次动量的结果,最后只有一个结果,即一个观测值。我需要的是批量依次对每个月实施动量策略的结果,所以最后得出的结果应该是一列数据,即一系列观测值。
求指教,谢谢