看板 Statistics 關於我們 聯絡資訊
[軟體程式類別]: 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
imaltar: 藥名很複雜 有大小寫各種組合 不是每總組合都可拿來當 08/18 19:44
imaltar: DATA的名稱 08/18 19:44
shga: 已經有先使用atc_code,把藥名標準化。 08/18 19:53
shga: 在建立某藥品資料的時候,以限定約25類的藥名資料。 08/18 19:54
MOONY135: 記得雙引號應該不用... 08/18 20:13
boshings: &type 就是文字變數了 SAS巨集變數預設都是文字型態 08/18 20:15
MOONY135: IF 改成WHERE看看 08/18 20:32
tew: call symput 08/18 21:18
MuteSun: 建議用ATC CODE或是健保碼統一格式再做, 08/24 08:05