推 tew:%eval 04/07 02:39
※ 引述《lsshno1 (朝右邊鋒邁進)》之銘言:
: 不好意思又來麻煩各位了,
: 我目前想要做這件事情:
: data examplea;
: set examplea;
: a1=y1;
: a2=lag(y2);
: a3=lag2(y3);
: a4=lag3(y4);
: a13=lag12(y13);
: a14=lag13(y14);
: run;
: 我參考之前west1996前輩的lagloop 巨集,
: 想編寫如下:
: %macro alagloop;
: data examplea;
: set examplea;
: a1=y1;
: array y(13) y1-y13;
: %do i=1 %to 13;
: a{&i+1}=lag&i*(y{&i+1});
: %end;
: run;
: %mend;
: %alagloop;
: 程式卻無法執行.
: 請大家幫我看一下哪裡有錯誤, 謝謝!
因為y後面接的數字跟lag的次數不一樣
這個沒研究過要怎麼表示
只能提供你其他方法
data cc;
set aa aa;
x=0;
run;
%macro aa;
%do s=1 %to 14;
data cc;
set cc;
a&s=lag&s(y&s);
if a&s=. then a&s=0;
x=x+a&s;
run;
%end;
%mend;
%aa;
data cc;
set cc nobs=n;
t=_n_;
if 1<t<=n/2+1;
keep x a1-a14;
run;
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.145.80
※ 編輯: MmmRrrrX 來自: 140.119.145.80 (04/07 02:23)