看板 Statistics 關於我們 聯絡資訊
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
bbearh:謝謝! 澄清了我一些Macro的概念. 01/18 00:17