楼主: lizhewenbei
13106 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
拉您进交流群
GMT+8, 2025-12-29 08:39