楼主: pandayan
1753 5

如何重覆 程序? [推广有奖]

  • 0关注
  • 0粉丝

高中生

50%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
106 点
帖子
17
精华
0
在线时间
33 小时
注册时间
2010-6-30
最后登录
2010-9-6

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
請各高手指教一下!!如何重覆data p2Q5至data Q8 的 程序呢?
感謝各位的幫助!
以下是我寫的過程,


data data;  
input yr y;
cards;
1988 55
1989 70
1990 90
1991 150
1992 170
run;
data addyr;
set data end=end;
output;
if end then do until(yr=2002);  
yr+1;  y=.;
output;
end;
run;
data Q1;
set  addyr;
retain ytop 0;
if _n_=1 then ytop=y;
else do;
f=0.1;   
ytop=ytop*(1-f)+y;
end;
aaa=0; ybar=0;
do m=1 to _n_;
f=0.1;  
aa= (1-f)**(m-1);
aaa=aa+aaa;   
end;
ybar=ytop/aaa;
run;
data Q2;
set Q1;
retain  r1 0;   
r1=lag(ybar);
r=ybar/r1;
run;
data Q3;
set  Q2;
retain rtop 0;
if _n_=2 then rtop=r;
else do;
f=0.1;   
rtop=(1-f)*rtop+r;
end;
aaa=0; rbar=0;
do m=2 to _n_;
f=0.1;  
aa= (1-f)**(m-2);
aaa=aa+aaa;   
end;
rbar=rtop/aaa;
run;
data Q4;
set Q3;
lybar=lag(ybar);      
lrbar=lag(rbar);  
py=lybar*lrbar;
run;





data p2Q5;
set Q4;
ppy=y;
run;
data p1Q5;
set Q4;
ppy=py;
run;
data  pQ5;
update  p1Q5 p2Q5;
by yr;
run;
data Q5;
set  pQ5;
retain pytop 0;
if _n_=1 then pytop=ppy;
else do;
f=0.1;     
pytop=pytop*(1-f)+ppy;
end;
aaa=0; pybar=0;
do m=1 to _n_;
f=0.1;  
aa= (1-f)**(m-1);
aaa=aa+aaa;   
end;
pybar=pytop/aaa;
run;
data Q6;
set Q5;
retain  r2 0;   
r2=lag(pybar);
pr=pybar/r2;
run;
data Q7;
set  Q6;
retain prtop 0;
if _n_=2 then prtop=pr;
else do;
f=0.1;     
prtop=(1-f)*prtop+pr;
end;
aaa=0; prbar=0;
do m=2 to _n_;
f=0.1;   
aa= (1-f)**(m-2);
aaa=aa+aaa;   
end;
prbar=prtop/aaa;
run;

data Q8;
set Q7;
prbar2=lag(prbar);
py=r2*prbar2;
run;
/*如何不斷重覆p2Q5至 Q8 的程序..直至 2002年呢?*/
proc print data=Q8;
run;

現在ouput py的樣子是:
                                                      Obs       py
                                                        1       .
                                                        2       .
                                                        3     71.923
                                                        4     83.954
                                                        5    115.258
                                                        6    136.720
                                                        7    138.030
                                                        8       .
                                                        9       .
                                                       10       .
                                                       11       .
                                                       12       .
                                                       13       .
                                                       14       .
                                                       15       .


但我想不斷重覆p2Q5至 Q8 的程序後output是:


py
-
-
71.92
83.95
115.26
136.72
138.03
138.91
139.54
140.01
140.36
140.64
140.86
141.04
141.18
二维码

扫码加我 拉你入群

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

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

关键词:RETAIN output update outpu cards 程序

沙发
pandayan 发表于 2010-7-22 11:41:53 |只看作者 |坛友微信交流群
請問我的要求是不是在sas中不能使用呢?

使用道具

藤椅
kuhasu 发表于 2010-7-22 13:47:43 |只看作者 |坛友微信交流群
你那一大篇儿我是没看
但是这种问题,一般都是,左右拿个鸭梨/香蕉也行,右手握鼠标,然后口中默念:repeat,repeat。。。。
通过宏循环或者数据步循环加数组完成的。

使用道具

板凳
pandayan 发表于 2010-7-23 14:21:06 |只看作者 |坛友微信交流群
kuhasu 发表于 2010-7-22 13:47
你那一大篇儿我是没看
但是这种问题,一般都是,左右拿个鸭梨/香蕉也行,右手握鼠标,然后口中默念:repeat,repeat。。。。
通过宏循环或者数据步循环加数组完成的。
Kusasu:請問数据步循环加数组是什麼..可介紹一下嗎?

使用道具

报纸
kuhasu 发表于 2010-7-23 22:37:15 |只看作者 |坛友微信交流群
pandayan 发表于 2010-7-23 14:21
kuhasu 发表于 2010-7-22 13:47
你那一大篇儿我是没看
但是这种问题,一般都是,左右拿个鸭梨/香蕉也行,右手握鼠标,然后口中默念:repeat,repeat。。。。
通过宏循环或者数据步循环加数组完成的。
Kusasu:請問数据步循环加数组是什麼..可介紹一下嗎?
请查看do和array相关。

使用道具

地板
reolin 发表于 2010-7-24 13:02:53 |只看作者 |坛友微信交流群
可否解释一下end=end是什么意思?初学者

使用道具

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

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

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

GMT+8, 2024-5-1 05:43