作者tew (咖啡王子)
站内Statistics
标题Re: [程式] SAS 算移动平均
时间Tue Jan 17 00:26:04 2012
data a;
set yourfile;
order=_n_;
run;
proc sort data=a;by id descending order;
run;
%macro a;
data a;
set a;
sum1=vol;
%do i=1 %to 30;
%let j=%eval(&i+1);
sum&j=sum&i+lag&i(vol);
if id^=lag&i(id) then sum&j=.;
%end;
drop sum1 vol1-vol30;
run;
proc sort data=a out=a(drop=order);by order;
run;
%mend;
%a;
※ 引述《bbearh (go)》之铭言:
: [软体程式类别]: sas
: [程式问题]: 资料处理
: [问题叙述]:
: 要处理类似 [移动平均数] 又要以id分组做.
: 因要平均的不像例子只有2 或 3, 会到30多笔.
: 这有没有一般的方法可用.
: 谢谢!
: --------------------
: 资料
: id vol
: 1 10
: 1 12
: 1 9
: 1 3
: 2 4
: 2 5
: 2 6
: 2 7
: 8 1
: 8 1
: 8 1
: ---------------------
: output:
: sum2 同一id 往下加两笔
: sum3 同一id 往下加 3笔
: 不够资料加的, 变成 .
: id vol sum2 sum3
: 1 10 22 31
: 1 12 21 24
: 1 9 12 .
: 1 3 . .
: 2 4 9 15
: 2 5 11 18
: 2 6 13 .
: 2 7 . .
: 8 1 2 3
: 8 1 2 .
: 8 1 . .
: 能够分点叙述处理流程,基本上在撰写程式或者跑统计时是相当有帮助的
: 甚至有经验的人可以藉此告知你步骤是否错误
: [程式范例]:
: 虽然张贴程式很可怕,但基本上有些程式还是要张贴才能解决
: -----------------------------------------------------------------------------
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.250.114.22
1F:推 bbearh:谢谢! 澄清了我一些Macro的概念. 01/18 00:17