SAS的巨集雖然屬於P3等級的內容,不過對於實際分析資料的使用者來說,應該是相當實用的語法,且必要學習的。巨集沒有想像中的難,只是多了一些平常不會使用的符號,例如『 % 』或『 & 』等,這一篇教學將會舉一個簡單的例子,說明巨集的使用方式。 先來假設一個狀況,有4個資料檔{a1,a2,a3,a4},每個資料檔中均包含4個變項{y1,x1,x2,x3},而我想以PROC REG來分析4個資料檔中「y1和x1」、「y1和x2」及「y1和x3」的相關性。 第一步:先建立4個資料檔並包含3個變數。 先以do loop建立4個資料檔,而y1、x1、x2、x3的值將隨機由uniform分佈中抽取。程式如下: data a1 a2 a3 a4 ; do i=1 to 4; do j=1 to 100; y1=uniform(123); x1=uniform(1234); x2=uniform(12345); x3=uniform(12345); drop i j; if i=1 then output a1; else if i=2 then output a2; else if i=3 then output a3; else if i=4 then output a4; end; end; run; 第二步:用傳統方式寫PROC REG程式。 當然可以傳統語法,逐筆將資料檔名稱和變項寫入程式中,以資料a1為範例: proc reg data=a1; model y1=x1; run; proc reg data=a1; model y1=x2; run; proc reg data=a1; model y1=x3; run; 然後再將這一小段程式複製3次,將data分別改成a2、a3、a4即可。 第三步:改用巨集的語法。 其實可以很清楚的找到一個邏輯性;PROC REG的程式每次只需要修改下面藍色的部分就好, proc reg data= a1 ; model y1= x3 ; run; 因此抓到這個邏輯以後,就可以寫出一段小小的巨集。 %macro My_reg (mydata, myvar); proc reg data=&mydata; model y1=&myvar; run; %mend My_reg; 這裡出現了奇怪的符號「%」和「 ...