作者liton (欧吉桑留学生)
看板Statistics
标题Re: [问题] SAS保留变数方法
时间Wed Jul 15 00:58:39 2009
我不知道原po的最终目的是什麽
如果只是照字面上说的 我想版大那一句就够了
这篇只是要提出一些从以下程式看到的问题
※ 引述《bugle (低点)》之铭言:
: ※ 引述《eigenvalue (somnambulist)》之铭言:
: : %MACRO SQL(num);
: : %do i = 1 %to #
: : PROC SQL;
: : CREATE TABLE WORK.STACY AS SELECT
: : ID,
: : PAY&i AS DJC&i → 这里的话只会保留 i = 12
: : FROM WORK.STACY1; 也就是只有DJC12 一个变数
: : QUIT; 要如何完整保留12个变数
: : %end;
: : %MEND;
: : %SQL(12);
为什麽会只有i=12?
这问题有点冏
因为你资料连续盖了11次当然只会有i=12
就算你用data set的语法
还是会犯同样的问题
: 摆错了
: PROC SQL;
: CREATE TABLE WORK.STACY AS SELECT
: ID,
: %MACRO SQL(num);
: %DO i = 1 %TO #
: PAY&i AS DJC&i %IF i<12 %THEN ,;;
: %END;
: %MEND;
: %SQL(12);
: FROM WORK.STACY1;
: QUIT;
Macro只是"文字的替换"
读进去之後才去呼叫
首先的错误便是 SQL语法哪认得%Macro....
其次的问题便是你呼叫的是
: %MACRO SQL(num);
: %DO i = 1 %TO &NUM;
: PAY&i AS DJC&i %IF i<12 %THEN ,;;
: %END;
: %MEND;
: %SQL(12);
这段程式想做啥?
至於west1996:do loop应该只要包住PAY&i AS DJC&i这一行就好了
这个....能不能执行上面都提到了
--------------------------------------
不要执着於Macro
是因为你要解某个问题 而这个问题适合用Macro解
而不是故意要用Macro去解某个问题
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.167.184.158
1F:→ west1996:不好意思,我不太了解您最後那一段的意思,因为macro 07/15 09:37
2F:→ west1996:function里面是可以包任何sas接受的statement的,所以包 07/15 09:38
3F:→ west1996:SQL也没有任何问题,虽然我昨天的推文里面是漏掉了一个 07/15 09:39
4F:→ west1996:逗号,但是整体概念应该是没有错的,另外此问题上用 07/15 09:41
5F:→ west1996:macro似乎没什麽不妥? 07/15 09:41
6F:→ bugle:%macro的宣告请移到外部试试,并不是完全不能用 07/15 20:34
7F:→ bugle:有必要回得这麽酸吗? 07/15 20:35