全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3747 8
2012-03-04
悬赏 20 个论坛币 已解决
已经下面N只股票的营业收入数据

stock_code

stock_name

dt_jzr

        yysr

000001

深发展A

19911231

1

000001

深发展A

19921231

2

000001

深发展A

19931231

3

000001

深发展A

19941231

4

000001

深发展A

19951231

5

000001

深发展A

19961231

6

000001

深发展A

19971231

7

000001

深发展A

19981231

8

000001

深发展A

19991231

9

000001

深发展A

20001231

10

000001

深发展A

20011231

11

000001

深发展A

20021231

12

000001

深发展A

20031231

13

000001

深发展A

20041231

14

000001

深发展A

20051231

15

000001

深发展A

20061231

16

000001

深发展A

20071231

17

000001

深发展A

20081231

18

000001

深发展A

20091231

19

000001

深发展A

20101231

20

000002

万科A

19921231

1

000002

万科A

19931231

2

000002

万科A

19941231

3

000002

万科A

19951231

4

000002

万科A

19961231

5

000002

万科A

19971231

6

000002

万科A

19981231

7

000002

万科A

19991231

8

000002

万科A

20001231

9

000002

万科A

20011231

10

000002

万科A

20021231

11

000002

万科A

20031231

12

000002

万科A

20041231

13

000002

万科A

20051231

14

000002

万科A

20061231

15

000002

万科A

20071231

16

000002

万科A

20081231

17

000002

万科A

20091231

18

000002

万科A

20101231

19



。。。。。。

求每只股票4年的复合增长率
CAGR = (当前营业收入/4年前的营业收入)^(1/4) - 1

例如

stock_code

stock_name

dt_jzr

yysr

cagr

000001

深发展A

19911231

1

.

000001

深发展A

19921231

2

.

000001

深发展A

19931231

3

.

000001

深发展A

19941231

4

(4/1)^(1/4)-1

000001

深发展A

19951231

5

(5/2)^(1/4)-1

000001

深发展A

19961231

6

(6/3)^(1/4)-1


。。。


这里面我觉得最难的是把第2年、第3年的值赋值为空
第1年赋值为空我会算,        if first.stock_code then carg_yysr=.;
但是第2年、第3年我就不会赋值为空了

最佳答案

fisheryou 查看完整内容

不明白你的复合增长率怎么算的,你给的算法与你所要的结果表里的算法不一致,我是按CAGR = (当前营业收入/4年前的营业收入)^(1/4) - 1算的。
二维码

扫码加我 拉你入群

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

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

全部回复
2012-3-4 17:58:21
不明白你的复合增长率怎么算的,你给的算法与你所要的结果表里的算法不一致,我是按CAGR = (当前营业收入/4年前的营业收入)^(1/4) - 1算的。
复制代码
二维码

扫码加我 拉你入群

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

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

2012-3-4 18:01:41
下面是我写的程序
%let n=4;
data carg;
        set czg;
        by stock_code ;
  dif3_yysr=dif3(yysr);
  lag3_yysr=lag3(yysr);
        if first.stock_code then carg_yysr=.;
        if second.stock_code then carg_yysr=.;
        if third.stock_code then carg_yysr=.;
        else carg_yysr=(dif3_yysr/lag3_yysr)**(1/&n)-1;
       format carg_yysr f8.4;
run;


        if second.stock_code then carg_yysr=.;
        if third.stock_code then carg_yysr=.;
SAS只能用IF FIRST
但是不能用SECOND,THIRD,请问如何把第2年,第3年赋值为空啊


另外SAS中对某数开N次方是不是我上面的写法
二维码

扫码加我 拉你入群

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

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

2012-3-5 09:47:56
顶上来,希望有人解答
二维码

扫码加我 拉你入群

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

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

2012-3-5 14:10:13
to:fisheryou
我用到了宏,其实是不用的
你的my=yysr-lag4(yysr)  这仅仅做了差分,
应是
my=yysr-lag4(yysr);

cagr=(my/yysr)*0.25-1;
吧?

二维码

扫码加我 拉你入群

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

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

2012-3-5 14:14:25
第一楼里面的复合增长率我写错了,现在纠正了
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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