作者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://webptt.com/m.aspx?n=bbs/Statistics/M.1439886246.A.B9C.html
※ 編輯: shga (203.71.94.5), 08/18/2015 16:28:20
1F:推 imaltar: 藥名很複雜 有大小寫各種組合 不是每總組合都可拿來當 08/18 19:44
2F:→ imaltar: DATA的名稱 08/18 19:44
3F:→ shga: 已經有先使用atc_code,把藥名標準化。 08/18 19:53
4F:→ shga: 在建立某藥品資料的時候,以限定約25類的藥名資料。 08/18 19:54
5F:→ MOONY135: 記得雙引號應該不用... 08/18 20:13
6F:推 boshings: &type 就是文字變數了 SAS巨集變數預設都是文字型態 08/18 20:15
7F:→ MOONY135: IF 改成WHERE看看 08/18 20:32
8F:推 tew: call symput 08/18 21:18
9F:→ MuteSun: 建議用ATC CODE或是健保碼統一格式再做, 08/24 08:05