j*****1 发帖数: 75 | 1 Sorry can't type Chinese.
Can anyone please help me with a SAS macro? I have a dataset includes
Month and Var1 (please see the dataset below) and I need to create a field
Var2, which is the mean of previous months' Var1.
For example, for Month 201401, var2= mean of 2.
for Month 201402 var2= mean of 2,4
for month 201404 var2 = mean of 2,4,5,8
etc......
Month Var1 Var2
201401 2 2.00
201402 4 3.00
201403 5 3.67
201404 8 4.75
201405 10 5.80
201406 12 6.83
201407 21 8.86
Thank you! | s*******e 发帖数: 1385 | 2 我没有SAS,你可以试试这个程序。
data temp;
set yourdata;
retain total 0;
var2=(total+var1)/_N_;
run;
field
【在 j*****1 的大作中提到】 : Sorry can't type Chinese. : Can anyone please help me with a SAS macro? I have a dataset includes : Month and Var1 (please see the dataset below) and I need to create a field : Var2, which is the mean of previous months' Var1. : For example, for Month 201401, var2= mean of 2. : for Month 201402 var2= mean of 2,4 : for month 201404 var2 = mean of 2,4,5,8 : etc...... : Month Var1 Var2 : 201401 2 2.00
| s*********e 发帖数: 1051 | 3 data one (drop = var2);
input Month Var1 Var2;
datalines;
201401 2 2.00
201402 4 3.00
201403 5 3.67
201404 8 4.75
201405 10 5.80
201406 12 6.83
201407 21 8.86
;
run;
proc sql;
create table two as
select b_month, mean(a_var1) as var2
from
(select
a.month as a_month,
b.month as b_month,
a.var1 as a_var1
from one as a, one as b where a.month <= b.month)
group by b_month;
quit;
proc print data =two;
run; | j*****1 发帖数: 75 | | m***c 发帖数: 118 | 5 proc sort data=one; by month var; run;
data two; set one; by month var;
var2+var1;
var2/_n_;
run;
飞越 |
|