[爆卦]sas macro變數是什麼?優點缺點精華區懶人包

為什麼這篇sas macro變數鄉民發文收入到精華區:因為在sas macro變數這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者shga (我愛慢慢跑)看板Statistics標題[程式] SAS中 MACRO 變數問題時間...


[軟體程式類別]:
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

你可能也想看看

搜尋相關網站