作者shga (我愛慢慢跑)
看板Statistics
標題[程式] SAS中 MACRO 變數問題
時間Tue Aug 18 16:24:04 2015
[軟體程式類別]:
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