全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2028 5
2010-07-20
請各高手指教一下!!如何重覆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
二维码

扫码加我 拉你入群

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

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

全部回复
2010-7-22 11:41:53
請問我的要求是不是在sas中不能使用呢?
二维码

扫码加我 拉你入群

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

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

2010-7-22 13:47:43
你那一大篇儿我是没看
但是这种问题,一般都是,左右拿个鸭梨/香蕉也行,右手握鼠标,然后口中默念:repeat,repeat。。。。
通过宏循环或者数据步循环加数组完成的。
二维码

扫码加我 拉你入群

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

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

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

扫码加我 拉你入群

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

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

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

扫码加我 拉你入群

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

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

2010-7-24 13:02:53
可否解释一下end=end是什么意思?初学者
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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