Re: [問題] SAS保留變數方法

看板Statistics作者 (歐吉桑留學生)時間15年前 (2009/07/15 00:58), 編輯推噓0(007)
留言7則, 2人參與, 最新討論串3/6 (看更多)
我不知道原po的最終目的是什麼 如果只是照字面上說的 我想版大那一句就夠了 這篇只是要提出一些從以下程式看到的問題 ※ 引述《bugle (低點)》之銘言: : ※ 引述《eigenvalue (somnambulist)》之銘言: : : %MACRO SQL(num); : : %do i = 1 %to &num; : : 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 &NUM; : 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

07/15 09:37, , 1F
不好意思,我不太了解您最後那一段的意思,因為macro
07/15 09:37, 1F

07/15 09:38, , 2F
function裡面是可以包任何sas接受的statement的,所以包
07/15 09:38, 2F

07/15 09:39, , 3F
SQL也沒有任何問題,雖然我昨天的推文裡面是漏掉了一個
07/15 09:39, 3F

07/15 09:41, , 4F
逗號,但是整體概念應該是沒有錯的,另外此問題上用
07/15 09:41, 4F

07/15 09:41, , 5F
macro似乎沒什麼不妥?
07/15 09:41, 5F

07/15 20:34, , 6F
%macro的宣告請移到外部試試,並不是完全不能用
07/15 20:34, 6F

07/15 20:35, , 7F
有必要回得這麼酸嗎?
07/15 20:35, 7F
文章代碼(AID): #1ANBb0tt (Statistics)
討論串 (同標題文章)
文章代碼(AID): #1ANBb0tt (Statistics)