2010-10-20 48 views

回答

4

SAS用戶有能力創建自己的SAS PROC的。他們必須許可SAS/Toolkit和C語言或其他語言的代碼。

SAS有許多不同的部分。宏是(或曾經是)SAS中最多(也可能是唯一)的通用工具,它可以將(幾乎任何但不是全部)部件放在一起。鑑於宏觀(語言)是多麼原始和奇怪,這有點有趣,但卻是真實的。

+0

感謝您關於SAS/Toolkit的提醒 - 我已經忘記了該產品。 – cmjohns 2010-10-21 16:58:06

4

這就好比問我們爲什麼當我們有UNIX中可用的所有程序時,我們有Perl,Python,ksh,bash等等。宏是腳本語言,它爲用戶提供了很大的靈活性並可以控制他們希望SAS執行的操作。您也可以輕鬆生成動態代碼。現有的procs在他們可以作爲輸入以及作爲輸出獲得的東西方面相當嚴格。 Proc FCMP已經向用戶定義的函數打開了數據步驟,但這仍然無法替代您使用宏語言獲得的靈活性。

+0

+1提到SAS宏代碼可以動態編寫代碼。這在我看來是編寫宏的主要原因。 – 2010-10-22 18:44:44

1

您可以在沒有授權工具包的情況下創建自定義宏,並且我記得很多人似乎都使用SAS Toolkit進行自定義過程。

宏幫助運行的程序反覆使用自定義參數和是無價的變量操縱和創造

特效一般是輸出設備。宏也可以幫助重複數據步驟操作。

這裏是一些代碼

enter image description here

+0

也可以使用鍵盤快捷鍵。我發現他們更方便 - 調用特效:) – 2012-06-08 11:20:00

3

有許多用途和宏的高級功能,但我主要就使用它們,所以我可以嘗試留真實的DRY Princicple。如果您發現自己處於經常重複代碼塊的情況,則可能需要執行此操作。例如,我總是將數據集導出爲ex​​cel。如果我最終做了在我的代碼幾次,我只是把代碼中的宏:

%macro export_set_excel(data,path,filename,sheetname); 
    PROC EXPORT DATA= &data. OUTFILE= "&path.&data." DBMS=EXCEL REPLACE; 
     SHEET="&sheetname."; 
     NEWFILE=YES; 
    RUN; 
%mend export_set_excel; 

然後當我在我的代碼一起去。我做一個數據集,我要出口的話,我可以只寫:

%export_set_excel (data=MyDataSet, path=C:\Temp\, filename=mydata.xlsx, sheetname=exportedData); 

這是一個簡單的線我必須寫,而不必寫7個或8行30次在一個文件中30次。它可以更容易地追蹤錯誤,如果我想改變一些關於如何導出的內容,我只需要在一個地方進行更改。

我使用它的不僅僅是導出,而是應該給你一個大致的想法。

如果您熟悉其他語言,您會發現sas宏語言很缺乏和繁瑣,但它絕對比沒有好。

2

大多數SAS程序對數據執行特定的操作。宏允許對SAS代碼塊進行運行時條件處理,例如使用DO循環在不同數據集上重複進行過程調用,或根據文件是否存在來決定運行數據步。雖然代碼對於新手來說看起來笨重,但是一旦學習BASE SAS,拾取起來實際上相對容易,因爲語法幾乎完全相同(對於風味來說,%s和@s大致相同)。