什麼是PROC STEP?
SAS統計分析的核心
用來進行統計分析、繪製圖表等功能
Proc Step
在第一篇介紹Data Step的文章中,我們有簡單的提到Proc Step
Proc Step是指由程序(Procedure)所建立的語法,在官方的語法文件中你所看到的Proc開頭都是Proc Step。
Proc Step在SAS中廣為人知的功能主要是統計分析與繪製圖表
但其實它也能執行部分的資料處理功能,例如:Proc Transpose,它可以把資料在橫式與直式之間進行轉換。
功能簡介
以下簡單介紹Procedure的功能與輸出
統計分析
proc reg data=sashelp.cars;
model invoice=Cylinders EngineSize;
run;
上面這是一個簡單線性回歸的程序,其他統計程序的結果大多是類似的模樣,差別在於不同的統計值與計算
多數統計分析的建模程序都會有觀測值數目、模型資訊、參數估計值這3大類,部分的程序可能會有圖形或是其他專屬於該統計方法的統計值結果
繪製圖表
proc sgplot data=sashelp.cars;
histogram msrp;
density msrp;
run;
上面這是一個繪製圖形的程序,繪製圖形的程序建議使用SG開頭(Proc Sgplot、Proc Sgpanel)的程序,這屬於較近代的繪製程序,在使用上比其他單一繪製圖形的程序更為靈活
多數繪製圖形的程序都會有佈景(layout)、圖例(legend)、主要圖形等參數可以來進行設定
另外還能夠自訂樣式,從圖形裡面的點、線條到字型等大多數的屬性都能夠修改,詳細目錄請見Commonly Used Attribute Options
檔案處理
proc transpose data=sashelp.cars(keep=make invoice) prefix=invoice_;
by make;
var invoice;
run;
上面這是用來檔案處理的程序,功能是把資料轉置,可以從左邊的直式轉換成右邊的橫式、或是反過來
這只是檔案處理程序的一小部分使用,其他還有檔案管理(Proc Datasets)、資料排序(Proc Sort)等功能
Procedures中的另類 – Proc SQL
為什麼要特別提出Proc SQL來介紹呢? 因為它可以取代Data Step跟部分Proc Step的功能
相信大部分的人都聽過結構化查詢語言 (Structured Query Language, SQL)
Proc SQL其實是SAS引入進來使用的(1992-ANSI標準),但並不符合目前SQL的ANSI標準(詳見)
但如果有使用過SQL,那麼學習Proc SQL的過程會十分輕鬆
如果沒學過的人也不用擔心,很快就會來介紹Proc SQL的語法與使用,它其實很簡單!
其實除了Proc SQL在Proc Step裡面比較特別以外,Proc Ds2與Proc IML也是比較特殊的程序,但就以泛用性而言,Proc SQL還是遠高於這兩者,所以才特別提出Proc SQL來介紹
Run/Quit結尾差異
在碰過官方的程序語法文件後,一定有眼尖的人會發現怎麼一個程序用Run敘述句做結尾、另一個用Quit敘述句呢?
以下就來進行解答!
Run跟Quit敘述句目的都是用來告訴SAS說:「我要終止這個Proc Step囉,請幫我執行到這個程序完就停止」
但差別在於Run敘述句是用來終止非互動式程序(Non-Interactive Procedures),而Quit敘述句是特別用來終止互動式程序(Interactive Procedures)
互動式程序(Interactive Procedures):可以在同一個Procedure的過程執行多個敘述句的功能,並且每次執行不需要退出後再執行
絕大多數的Proc Step都是非互動式程序,僅有少數為互動式程序,例如:Proc Datsets、Proc SQL、Proc Glm及Proc IML等, 目前來說不需要特別去背哪些程序用哪個結尾,只要了解它們在SAS背後的運作方式即可。
單就效能而言,Quit敘述句可以比Run敘述句減少些微的CPU執行時間,但這個效能對整個程式的影響微乎其微
參考資料:
Basic SAS® PROCedures for Producing Quick Results – Kirk Paul Lafler
Running interactive procedures in SAS Studio and SAS University Edition
謝謝閱讀這篇文章,有問題歡迎在下方留言