作者pgychen (pp)
站內Statistics
標題[程式] 如何用 SAS 的 macro 跑交互作用?
時間Mon Jun 13 15:55:02 2011
因為變數會很多,所以用 varlist 來代表變數及其交互作用
%let varlist1= x1 y1;
%let varlist2= x1 y1 x1*y1;
%let varlist3= x1 y1 x1*y1 x1*z1 y1*z1 z1*y1*z1;
%macro function(var);
proc genmod;
class &var;
model y=&var /dist=poisson link=log;
run;
%mend;
%function(&varlist1) <--這行可以正確執行
%function(&varlist2) <--這行是 syntax error
%function(&varlist3) <-- Syntax error
請問要如何把交互作用項放進去 macro 裡面呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.240.145.6
1F:推 west1996:你是用哪一個procedure? reg? glm? 06/13 17:01
2F:→ west1996:建議把完整的code貼上來 06/13 17:02
3F:→ pgychen:抱歉,是用 genmod 跑 poisson 06/13 17:37
4F:→ kingbee:第二個解析第一次出來其實變成%function(x x*y)就不合理 06/13 17:52
5F:→ kingbee:會辨識到額外的符號 * 06/13 17:53
6F:推 west1996:試試看一開始的%let=後面用%bquote()來保護後面的字串 06/13 18:01
7F:推 west1996:不對,我剛試了一下,就算不加用原本的程式碼也是可以跑 06/13 18:07
8F:→ west1996:的@@ 06/13 18:07
9F:→ west1996:你要不要先試一下不要用macro語法直接跑跑看有交互作用的 06/13 18:08
10F:→ west1996:其中一個model,搞不好問題根本不是出在macro上面.... 06/13 18:08
11F:→ pgychen:謝謝你,我找到錯誤的地方了,就是在 class 裡面用了 &var 06/13 20:38
※ 編輯: pgychen 來自: 111.240.147.30 (06/13 20:39)
12F:→ pgychen:不跑交互作用,都不會執行錯誤。謝謝你 west1996 06/13 20:40