全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
9894 10
2010-10-09
悬赏 10 个论坛币 已解决
na
10.1
20.2
30.3
40.4
50.5
60.6
70.7
80.8
90.9
101
111.1
121.2
131.3
141.4
151.5

根据上面的表格求下面的表格。
aa是a的5期移动平均值。
aaa是aa的5期移动平均值。


naaaaaaaaaa
10.1   
20.2   
30.3   
40.4   
50.50.3  
60.60.4  
70.70.5  
80.80.6  
90.90.70.5 
1010.80.6 
111.10.90.7 
121.210.8 
131.31.10.90.7
141.41.210.8
151.51.31.10.9

最佳答案

pobel 查看完整内容

data have; input n a ; datalines; 1 0.1 2 0.2 3 0.3 4 0.4 5 0.5 6 0.6 7 0.7 8 0.8 9 0.9 10 1 11 1.1 12 1.2 13 1.3 14 1.4 15 1.5 ; %macro move_avg(var,num); %let lagnum=%eval(&num-1); (&var %do i=1 %to &lagnum; +lag&i(&var) %end; )/&num %mend move_avg; data wanted; set have; aa=%move_avg(a,5); aaa=%move_avg(aa,5) ...
二维码

扫码加我 拉你入群

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

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

全部回复
2010-10-9 12:46:53
data have;
input n a ;
datalines;
1 0.1
2 0.2
3 0.3
4 0.4
5 0.5
6 0.6
7 0.7
8 0.8
9 0.9
10 1
11 1.1
12 1.2
13 1.3
14 1.4
15 1.5
;


%macro move_avg(var,num);
   %let lagnum=%eval(&num-1);
   (&var   
     %do i=1 %to &lagnum;
       +lag&i(&var)
   %end;
   )/&num
%mend move_avg;


data wanted;
    set have;
aa=%move_avg(a,5);
aaa=%move_avg(aa,5);
aaaa=%move_avg(aaa,5);
run;
二维码

扫码加我 拉你入群

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

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

2010-10-9 13:38:40
复制代码
二维码

扫码加我 拉你入群

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

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

2010-10-9 13:42:39
学习了,俺也凑凑热闹,刚刚用R做了下
复制代码
二维码

扫码加我 拉你入群

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

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

2010-10-9 16:03:37
复制代码
二维码

扫码加我 拉你入群

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

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

2010-10-9 22:17:25
peijiamei 发表于 2010-10-9 12:46
na
10.1
20.2
30.3
40.4
50.5
60.6
70.7
80.8
90.9
101
111.1
121.2
131.3
141.4
151.5

根据上面的表格求下面的表格。
aa是a的5期移动平均值。
aaa是aa的5期移动平均值。


naaaaaaaaaa
10.1   
20.2   
30.3   
40.4   
50.50.3  
60.60.4  
70.70.5  
80.80.6  
90.90.70.5 
1010.80.6 
111.10.90.7 
121.210.8 
131.31.10.90.7
141.41.210.8
151.51.31.10.9
I give a simple solution here. You may calculate the aaa and aaaa simularly.

data tmp;
  do a=0.1 to 1.5 by 0.1;
    output;
end;
run;

data tmp2;
  set tmp;
  la0=a; la1=lag1(a); la2=lag2(a); la3=lag3(a); la4=lag4(a);
  if _n_>=5 then aa=sum(a,la1,la2,la3,la4)/n(a,la1,la2,la3,la4);
  keep a aa;
  run;

  proc print; run;
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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