作者imaltar (..)
站內Statistics
標題Re: [程式] SAS 算移動平均
時間Tue Jan 17 01:02:19 2012
※ 引述《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 . .
: 能夠分點敘述處理流程,基本上在撰寫程式或者跑統計時是相當有幫助的
: 甚至有經驗的人可以藉此告知你步驟是否錯誤
: [程式範例]:
: 雖然張貼程式很可怕,但基本上有些程式還是要張貼才能解決
: -----------------------------------------------------------------------------
data a;
input id vol ;
cards;
1 10
1 12
1 9
1 3
2 4
2 5
2 6
2 7
8 1
8 1
8 1
;
run;
proc sort data=a;by id;
proc expand data=a out=b method=none;
by id;
convert vol=sum2/transformout=(cmovsum 2);
convert vol=sum3/transformout=(cmovsum 3);
run;
data b;set b;
if sum2=vol then sum2=.; else sum2=sum2;
run;
proc expand data=b out=c method=none;
by id;
convert sum3=sum3/transformout=(lead 1);
run;
data c;set c;if sum3=sum2 then sum3=.;run;
c就是最後的data
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.168.217.180
推 bbearh:感謝! 我另外想知道是不是有現有的命令可用. 你的方法已回 01/18 00:20
→ bbearh:答了我. 01/18 00:20