楼主: 管理考研
1946 1

SAS 分组权重求加权收益 怎么编程 [推广有奖]

  • 4关注
  • 1粉丝

讲师

2%

还不是VIP/贵宾

-

威望
0
论坛币
5470 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
3891 点
帖子
130
精华
0
在线时间
649 小时
注册时间
2008-2-12
最后登录
2021-11-18

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
根据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

二维码

扫码加我 拉你入群

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

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

关键词:怎么编程 RETURN final date mean 怎么编程 收益

沙发
Eternal0601 发表于 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;
  
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
advil + 1 + 1 + 1 对论坛有贡献
yongyitian + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-17 21:02