楼主: lizhewenbei
12000 29

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

11
朱蕾Julie 学生认证  发表于 2014-11-10 09:18:39 |只看作者 |坛友微信交流群
proc import out=test
datafile="d:\test1.csv"
dbms=csv replace;
getnames=yes;
run;
data a;
set test;
by stkcd 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;

使用道具

12
lizhewenbei 学生认证  发表于 2014-11-10 09:43:57 |只看作者 |坛友微信交流群
朱蕾Julie 发表于 2014-11-10 09:11
对每个stkcd  就把
proc sort data=test out=test1;
by year;
按照您原来的程序(按照year排序的),好像只能得到stkcd=900957的相关数据(求和、移动平均)。我的意思是,能否把其他公司的计算结果也显示出来?感谢您!

使用道具

13
lizhewenbei 学生认证  发表于 2014-11-10 09:43:58 |只看作者 |坛友微信交流群
朱蕾Julie 发表于 2014-11-10 09:11
对每个stkcd  就把
proc sort data=test out=test1;
by year;
按照您原来的程序(按照year排序的),好像只能得到stkcd=900957的相关数据(求和、移动平均)。我的意思是,能否把其他公司的计算结果也显示出来?感谢您!

使用道具

14
朱蕾Julie 学生认证  发表于 2014-11-10 09:53:40 |只看作者 |坛友微信交流群
那个stkcd=900957求的是900957个stkcd的总和
后面那个程序我写错了  不好意思啊

使用道具

15
朱蕾Julie 学生认证  发表于 2014-11-10 10:07:07 |只看作者 |坛友微信交流群
朱蕾Julie 发表于 2014-11-10 09:53
那个stkcd=900957求的是900957个stkcd的总和
后面那个程序我写错了  不好意思啊
proc import out=test
datafile="d:\test1.csv"
dbms=csv replace;
getnames=yes;
run;
data a;
set test;
by stkcd year;
if  last.year ;
sum+earning;
sum_1=sum-earning;
if first.stkcd then do sum=earning ;sum_1=0;
end;
run;
data b;
do obsnum=3 to last;
set a point=obsnum ;
by stkcd year;
if last.year;
end;
run;
data c;
merge a b(drop=sum_1 earning rename=(sum=sum_2)) ;
ma=(sum_2-sum_1);
run;

使用道具

16
朱蕾Julie 学生认证  发表于 2014-11-10 10:10:27 |只看作者 |坛友微信交流群
现在行不?

使用道具

17
lizhewenbei 学生认证  发表于 2014-11-10 10:13:51 |只看作者 |坛友微信交流群
朱蕾Julie 发表于 2014-11-10 09:11
对每个stkcd  就把
proc sort data=test out=test1;
by year;
按照您原来的程序(按照year排序的),好像只能得到stkcd=900957的相关数据(求和、移动平均)。我的意思是,能否把其他公司的计算结果也显示出来?感谢您!

使用道具

18
朱蕾Julie 学生认证  发表于 2014-11-10 10:13:57 |只看作者 |坛友微信交流群
我试过没错了

使用道具

19
lizhewenbei 学生认证  发表于 2014-11-10 10:15:07 |只看作者 |坛友微信交流群
朱蕾Julie 发表于 2014-11-10 10:13
我试过没错了
多谢您,由于系统错误,消息发送了很多次,真抱歉!

使用道具

20
朱蕾Julie 学生认证  发表于 2014-11-10 10:17:00 |只看作者 |坛友微信交流群
lizhewenbei 发表于 2014-11-10 10:15
多谢您,由于系统错误,消息发送了很多次,真抱歉!
proc import out=test
datafile="d:\test1.csv"
dbms=csv replace;
getnames=yes;
run;
data a;
set test;
by stkcd year;
if  last.year ;
sum+earning;
sum_1=sum-earning;
if first.stkcd then do sum=earning ;sum_1=0;
end;
run;
data b;
do obsnum=3 to last;
set a point=obsnum ;
by stkcd year;
if last.year;
end;
run;
data c;
merge a b(drop=sum_1 earning rename=(sum=sum_2)) ;
ma=(sum_2-sum_1);
run;
没事
这是新程序  我试过没错了

使用道具

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

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

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

GMT+8, 2024-4-20 04:21