楼主: ciciwanghk
4545 14

[原创博文] sas编程问题,大侠帮忙做出这个结果 [推广有奖]

11
hssnow 发表于 2011-2-11 18:36:52
8# baoaibaobao
呵呵 descending + lag()
nice!
My Blog: http:/hssnow.name/
宁静致远

12
baoaibaobao 发表于 2011-2-11 22:42:09
ciciwanghk 发表于 2011-2-11 17:48
8# baoaibaobao
  1. name        date        price        price1        yinzi        
  2. a        20080101        23        43        43/23*1=1.869565        1.869565217
  3. a        20080102        43        134        134/42*1.869565=5.964803        5.964802619
  4. a        20080103        134        43               
  5. a        20080104        43        243               
  6. a        20080105        243        43               
  7. a        20080106        43        32               
  8. a        20080107        32        4               
  9. a        20080108        4                        
  10. b        20080101        324        3               
  11. b        20080102        3        43               
  12. b        20080103        43        23               
  13. b        20080104        23        3               
  14. b        20080105        3        32               
  15. b        20080106        32                        
复制代码
这是我想要的结果,我把因子的计算公式写出来了
因子初始值是1只是在计算的第一个值是1而不是因子的第一个值就是1name是股票名,每只股票因子初始值是1
楼主的这个结果与给出的数据有点自相矛盾啊,price与price1相反了,我还是按照原来数据集的意思,修改了我8#的代码,因子初始值也修改了,你看看吧!

13
ciciwanghk 发表于 2011-2-12 09:52:08
12# baoaibaobao 大侠太厉害了,您做的正式我想要的结果,我写的结果的确是反了 呵呵,谢谢

14
leedx 发表于 2011-2-18 17:40:27
其实你这个是一个时间序列的数据,可以用差分来试一下

15
shenliang_111 发表于 2011-8-24 12:18:59
try this:
/*实现price1的上移*/
proc expand data=a out=aa(drop=time) method=none;
by name;
convert price1=price/transformout=(lead 1);
run;
/*实现因子的计算*/
data result;
do _n_=1 by 1 until(last.name);
set aa;
by name;
if _n_=1 then yinzi=price/price1;
else yinzi=(price/price1)*yinzi;
output;
end;
run;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 01:03