全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2220 1
2013-06-01
根据date变量分组 分组之后要求生成一个新变量 meanreturn  
该新变量等于每个小组内以msmvosd为权重乘以收益mretwd的加权收益的和  这个怎么办哈  数据集为cq.final  要求由数据集
date     msmvosd    mretwd
200601        1              1            
200601        2              1            
200602        3              2            
200602        4              3            
生成新数据集
date     msmvosd    mretwd   meanreturn
200601        1              1        1/3*1+2/3*1=1
200602        3              2         3/7*2+ 4/7*3=18/7

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-6-1 16:59:22
这个应该可以实现你想要的
data raw;
input date     msmvosd    mretwd;
cards;
200601        1              1            
200601        2              1            
200602        3              2            
200602        4              3     
;
run;

proc sort data=raw;
by  date    descending msmvosd ;
run;


data final(keep=date     msmvosd    mretwd   meanreturn);
do _n_=1 by 1 until(last.date);
        set raw;
        by date;
        if first.date then total=msmvosd;
        else total+ msmvosd;
end;

do _n_=1 to _n_;
   set raw;
   by date;
  if first.date then meanreturn= msmvosd/total*mretwd;
  else meanreturn + msmvosd/total*mretwd;
  if last.date then output;
end;
run;
  
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群