楼主: lizhewenbei
12024 29

【请教】怎么用SAS计算每N年的一个指标(比如连续五年的平均值、连续三年的标准差等) [推广有奖]

  • 15关注
  • 5粉丝

副教授

36%

还不是VIP/贵宾

-

威望
0
论坛币
309 个
通用积分
11.4770
学术水平
4 点
热心指数
13 点
信用等级
5 点
经验
9699 点
帖子
609
精华
0
在线时间
496 小时
注册时间
2008-2-6
最后登录
2024-1-9

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请教大侠们,怎么用SAS计算每N年的一个指标(比如连续五年的平均值、连续三年的标准差等)
具体而言:
如果要计算这个指标,又怎么做?
将公司利润EARNING每三年加总一次。(数据详见附件)
二维码

扫码加我 拉你入群

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

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

关键词:标准差 平均值 earning ning Earn 标准差 平均值

test1.rar

185.5 KB

本附件包括:

  • test1.csv

沙发
朱蕾Julie 学生认证  发表于 2014-11-9 21:31:00 |只看作者 |坛友微信交流群
用sum+earning得到data a;  
merge a a(firstobs=6  rename=(sum=sum_1));
ma5=(sum_1-sum)/5;
即用6年总利润-第一年利润 然后运算  标准差类似
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
lizhewenbei + 1 + 1 + 1 + 1 精彩帖子

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

使用道具

藤椅
朱蕾Julie 学生认证  发表于 2014-11-9 21:32:21 |只看作者 |坛友微信交流群
我理解的 不一定对

使用道具

板凳
朱蕾Julie 学生认证  发表于 2014-11-9 21:37:25 |只看作者 |坛友微信交流群
我理解的 不一定对

使用道具

报纸
lizhewenbei 学生认证  发表于 2014-11-9 21:39:30 |只看作者 |坛友微信交流群
朱蕾Julie 发表于 2014-11-9 21:32
我理解的 不一定对
感谢你的热心回答!我试了试,还是有点没有摸清您的思路,现在我把一个很简洁的数据集(test)放在了帖子的附件上,能否请您给一个代码呢?

使用道具

地板
斤斤计较你 发表于 2014-11-9 22:38:39 |只看作者 |坛友微信交流群
参考一下:

data class;
  set sashelp.class;
  array var_lag[6];
  var_lag[1] = lag(age);
  do i=1 to 5;
  var_lag[i+1] = lag(var_lag[i]);
  end;
  mean = mean(of var_lag[*]);
  std = std(of var_lag[*]);
run;
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
lizhewenbei + 3 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 3  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

7
lizhewenbei 学生认证  发表于 2014-11-10 07:46:07 |只看作者 |坛友微信交流群
斤斤计较你 发表于 2014-11-9 22:38
参考一下:

data class;
非常好的举例,给我很大帮助!

使用道具

8
朱蕾Julie 学生认证  发表于 2014-11-10 08:08:23 |只看作者 |坛友微信交流群
proc import out=test
datafile="D:\test1.csv"
dbms=csv replace;
getnames=yes;
run;
proc sort data=test out=test1;
by year;
run;
data a;
set test1;
by year;
if last.year ;
sum+earning;
sum_1=sum-earning;
run;
data b;
merge a a(firstobs=3  drop=sum_1 earning rename=(sum=sum_2)) ;
ma=(sum_2-sum_1);
run;
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
lizhewenbei + 1 + 1 + 1 + 1 认真负责水平高!!!

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

使用道具

9
lizhewenbei 学生认证  发表于 2014-11-10 09:03:15 |只看作者 |坛友微信交流群
朱蕾Julie 发表于 2014-11-10 08:08
proc import out=test
datafile="D:\test1.csv"
dbms=csv replace;
朱蕾的程序很好,但是如果能考虑stkcd就更好了。因为要针对每一个公司来做,比如stkcd=000001时,1-5年的平均值、2-6年的平均值。

使用道具

10
朱蕾Julie 学生认证  发表于 2014-11-10 09:11:20 |只看作者 |坛友微信交流群
lizhewenbei 发表于 2014-11-10 09:03
朱蕾的程序很好,但是如果能考虑stkcd就更好了。因为要针对每一个公司来做,比如stkcd=000001时,1-5年的 ...
对每个stkcd  就把
proc sort data=test out=test1;
by year;
run;
中的year 改为 stkcd

使用道具

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

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

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

GMT+8, 2024-4-25 09:58