[SAS] Macro Variable 巨集變數 – I

Posted: 17 三月, 2014 by Chris Lin in Biostatistics/SAS/Python

SAS初學者可將 macro variable想成是一種代號, 這個代號背後所代表的, 可以是一個變項, 一個數字, 或是一個字串, etc…
常見的macro variable有兩種型式:

(1) 存在 %macro ….. %mend 裡面的 macro variable, 作用是在執行重複性流程時, 每次均更改流程中的某個(些)部分. 這種巨集變數僅在該%macro裡面有效 (因此又稱為local macro variable), 在%macro之外的地方便失去意義.

Ex: 假設在logistic regression model中, 我們的independent variables均維持不變, 但需要觀察好幾種dependent variable. 與其執行好幾次的 proc logistic data = … 我們可以將整個proc logistic 流程用 %macro%mend包起來, 並透過一個巨集變數, 每次執行時均去替代model中的dependent variable. 程式如下:

%macro L_Model (Dep); /*將此macro命名為L_Model, 其僅含有一個巨集變數, 叫做Dep*/
ods output OddsRatios = ORs;
proc logistic data =INCIDENCE descending;
class AgeGroup Gender DiseaseA DiseaseB/param = ref ref = first;
model &Dep. = AgeGroup Gender DiseaseA DiseaseB; /*這個Dep只是一個代號. 之後, 每當我們替換這個代號背後代表的元素時, 便是改變了model的dependent variable . 註: 呼叫巨集變數時, 前面需要加一個 & 符號*/
run;
quit;
ods output close;
%mend L_Model;

/*接下來, 我們只需使用這個 L_Model流程, 每次在其括號內更換不同的dependent variable即可*/
%L_Model(Dep = Event1); /*第一次執行時, 我們觀察的dependent variable為 Event1*/
%L_Model(Dep = Event2); /*dependent variable為 Event2*/
%L_Model(Dep = Event3);

(2) Global macro variable. 請見[SAS] Macro Variable 巨集變數 – II.

發表留言