作者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