看板 Statistics 關於我們 聯絡資訊
[軟體程式類別]: SAS [程式問題]: 敘述統計 [軟體熟悉度]: 低(1~3個月) [問題敘述]: 我想要寫proc means的迴圈 但因為對迴圈不熟悉,而書上對於迴圈的示範多是在資料處理的部份 所以我就依樣畫葫蘆把他用在proc means裡面 我要對emp這個變數進行proc means並求取該變數的sum值 由於分類變類太多了(240個分類),而且每一個分類變數之間並沒有關係 所以我要以更換分類變數的方法,重複計算每次的sum值 舉例(re1到 re240即不同的分類變數) ID emp re1 re2 re3 ... ... re240 A 25 1 0 1 0 B 10 1 1 1 0 C 15 0 0 1 0 如果以re1做為分類變數 emp的sum值就是 re1=0 sum=15 re1=1 sum=25+10 若以re2做為分類變數 emp的sum值就是 re2=0 sum=25+15 re2=1 sum=10 以此類推 [程式範例]: 原來的作法是 proc means data=c maxdec=2 n mean sum; var emp; class re1 ; by two_digit; output out=C_re1 N=N mean=mean sum=sum ; TITLE ’C_re1’; ; run; 然後每次手動更換re1到re240... 於是我想說這樣用 %macro rep(i); proc means data=c maxdec=2 n mean sum; var emp; class re&i ; output out=C_re&i N=N mean=mean sum=sum ; TITLE ’C_re&i’; %mend rep; %rep(1); %rep(2); %rep(3); 我覺得應該沒有錯 但是sas跑出 WARNING: Apparent symbolic reference I’ not resolved. 而且左邊的content's work 忽然出現了一個資料夾叫做sasmacr 想請問出了什麼問題 然後程式碼要怎麼修 感謝幫忙 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.138.153.11 ※ 編輯: hanjing 來自: 140.138.153.11 (04/26 17:20)
ASD332:title 中改用雙引號? " " 04/26 17:52
hanjing:好像沒什麼差 04/26 18:04
ASD332:改成這樣試看看 Title "C_re&i" ; 04/26 18:23
hanjing:嗯,改用雙引號之後,WARNING: Apparent symbolic reference 04/26 18:31
hanjing:這行消失了,但是左邊的欄位還是有sasmacr這個資料夾,而且 04/26 18:32
hanjing:要刪除資料夾時會出現..ERROR:you cannot delete 04/26 18:40
hanjing:work.sasmacr.catalog because work.sasmacr.catalog 04/26 18:41
hanjing:is in use by you in resource environment dms process 04/26 18:41
ASD332:那應該是你自訂 macro 後產生出來的 不用理它 04/26 18:55
ASD332:離開 sas 後會自動消失 04/26 18:55
hanjing:另外還有一個問題就是,最後一個產生的C_re&i會無法開啟 04/26 18:56
hanjing:例如 %rep(3);是最後一個的話,C_re3會無法開啟,我的想法是 04/26 18:58
hanjing:那就多用一個,像我最多有240個,所以就讓他到241這樣 04/26 18:59
tew:因為你寫了 Macro 他會出來 sasMacr 這樣的東西 儲存你的巨 04/26 19:18
hanjing:嗯,了解,所以我這樣用macro真的沒有錯嗎?可是為什麼還是會 04/26 20:09
hanjing:有最後一個%rep()的結果開不起來 04/26 20:10
ASD332:你這樣的寫法並無牽涉到 do-loop,所以不會產生你提到的241 04/26 21:46
ASD332:確認一下變項或檔案是否存在吧 04/26 21:47
hanjing:我確定變項是在的,如果假設%rep(4)是最後一個rep,只要開啟 04/27 09:42
我確定re4這個變項的確存在 但如果%rep(4)是最後一個rep的話,在proc means的程序跑完後 所產生的C_re4就會無法開啟,也無法刪除 這是對話框的畫面,可以幫我解答一下是不是程式寫的地方有問題 http://www.ppbox.com.tw/img/1272332202x-1937073909.jpg
※ 編輯: hanjing 來自: 140.138.153.11 (04/27 09:46)
ASD332:macro 裡的 proc means 最後加個 run ; 04/27 14:36
hanjing:嗯,還是一樣,會刪不掉 04/27 16:58
ASD332:重新啟動 sas 再跑一次看看... 04/27 17:23
kingbee:最後一行改用quit; 做結尾 04/28 17:10
hanjing:嗯~QUIT; 可以 感 謝幫忙 04/30 15:07
hanjing:嗯proc means的時候加quit可以,但到了data指令時用quit會 04/30 15:18
hanjing:出現ERROR 180-322: Statement is not valid or it is use 04/30 15:18
hanjing:out of proper order. 04/30 15:18
hanjing:雖然不知道為什麼,但在DATA指令下將quit改run就ok了 感謝 04/30 15:20
sneak: 重新啟動 sas 再跑 https://daxiv.com 01/02 15:06