[程式] SAS中 MACRO 變數問題

看板Statistics作者 (我愛慢慢跑)時間8年前 (2015/08/18 16:24), 8年前編輯推噓3(306)
留言9則, 6人參與, 最新討論串1/2 (看更多)
[軟體程式類別]: SAS [程式問題]: 資料處理 [軟體熟悉度]: 中(3個月到1年) [問題敘述]: 資料drug中的藥品欄位(drugname)包含很多藥品,以A,B,C.D...Z為例。 我想要把每一個藥品資料都輸出獨立的檔案 例如 data A; set drug; if drugname = "A"; run; data B; set drug; if drugname = "B"; run; ... 轉換成MACRO,則如下 %MACRO out(type); /*每個藥進行分析*/ data &type; set drug; if drugname = "&type" ; run; %MEND; %out(A); %out(B); 但由於加入了雙引號,所以"&type" 無法轉換成 "A"。 因此就無法輸出,請問各位該如何解決這個問題呢? 我使用另外一種方式,先在原始資料庫,將每一個藥品A,B,C給予對應的數值1,2,3 當使用等於數值,則無需加雙引號,可以成功。 但想請教如何在MACRO中 使用 等於MACRO文字變數的方式。 有人建議使用symput ,但不太清楚正確使用。 %MACRO out(type,no); /*每個藥進行分析*/ data &type; set drug; if drugname = &no ; run; %MEND; %out(A,1); %out(B,2); ----------------------------------------------------------------------------- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.71.94.5 ※ 文章網址: https://www.ptt.cc/bbs/Statistics/M.1439886246.A.B9C.html ※ 編輯: shga (203.71.94.5), 08/18/2015 16:28:20

08/18 19:44, , 1F
藥名很複雜 有大小寫各種組合 不是每總組合都可拿來當
08/18 19:44, 1F

08/18 19:44, , 2F
DATA的名稱
08/18 19:44, 2F

08/18 19:53, , 3F
已經有先使用atc_code,把藥名標準化。
08/18 19:53, 3F

08/18 19:54, , 4F
在建立某藥品資料的時候,以限定約25類的藥名資料。
08/18 19:54, 4F

08/18 20:13, , 5F
記得雙引號應該不用...
08/18 20:13, 5F

08/18 20:15, , 6F
&type 就是文字變數了 SAS巨集變數預設都是文字型態
08/18 20:15, 6F

08/18 20:32, , 7F
IF 改成WHERE看看
08/18 20:32, 7F

08/18 21:18, , 8F
call symput
08/18 21:18, 8F

08/24 08:05, , 9F
建議用ATC CODE或是健保碼統一格式再做,
08/24 08:05, 9F
文章代碼(AID): #1LqkkckS (Statistics)
文章代碼(AID): #1LqkkckS (Statistics)