天天看點

《深入解析sas:資料處理、分析優化與商業應用》一1.5 一個簡單的SAS程式

本節書摘來自華章出版社《深入解析sas:資料處理、分析優化與商業應用》一書中的第1章,第1.5節,作者 夏坤莊 徐唯 潘紅蓮 林建偉,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視

在了解了sas視窗環境并簡單了解了sas邏輯庫、資料集這些基礎概念後,就可以在sas視窗環境編輯一個簡單的sas程式,送出運作并檢視結果了。sas程式由data步和過程步組成。data 步由關鍵字data開始,過程步由關鍵字proc開始。當然sas程式還可以包括宏語言,這個會在本篇後面的章節中專門介紹。

啟動sas視窗環境,在“程式編輯器”視窗輸入下面的代碼。

代碼前面的部分之前已經介紹過。libname語句定義實體路徑在c:sasdata的sas邏輯庫saslib。data步建立存儲在邏輯庫saslib下的sas資料集invertory,其中包含3個變量(列),分别為product_id、instock和price。在data步中sas會讀取緊接着datalines語句并以分号結束的4行輸入資料,每行資料按順序指派給前面3個變量。print過程會在結果檢視器中列印data步建立的資料集inventory中的數值。

在輸入代碼後,保證該“程式編輯器”視窗為活動視窗,然後選擇菜單“檔案”“儲存”,單擊“工具欄”的工具項或按快捷鍵ctrl+s儲存所輸入的sas程式語句為“測試程式”。目前的視窗環境如圖1.7所示。這時要保證c:sasdata檔案夾存在,如果沒有,在對應的目錄建立一個,否則在“日志”視窗會提示錯誤及錯誤資訊。選擇菜單“運作”“送出”,或單擊“工具欄”中的工具項、按快捷鍵f3送出代碼。

預設情況下代碼送出執行後,包含運作結果的檔案html會産生,并自動顯示為目前活動視窗,而主視窗左側則會顯示結果清單,如圖1.8所示。

在圖1.8中,資料集inventory的觀測值和變量以表的形式展現在了html格式的“結果檢視器”中。其中,“sas系統”字樣是sas系統預設标題。可以在print過程之前使用title語句指定輸出标題或在print過程中指定标題,通常我們會指定有意義的文字,比如“倉庫庫存”。指定的标題在整個sas會話期間一直有效,如果要使用其他輸出标題或恢複預設标題,可以再次使用title語句指定。此外,還可以指定結果的多級标題和腳注,這裡不贅述。

《深入解析sas:資料處理、分析優化與商業應用》一1.5 一個簡單的SAS程式
《深入解析sas:資料處理、分析優化與商業應用》一1.5 一個簡單的SAS程式

可以通過“結果”視窗的條目在“結果檢視器”的html檔案中導航。在圖1.8所示的“結果”視窗展開“print: sas系統”,并單擊html條目,該條目對應的結果會自動展示在“結果檢視器”的目前位置。

在代碼運作過程中,運作日志會顯示在“日志”視窗。單擊視窗條的“日志 -(無标題)”可顯示日志資訊,如圖1.9所示。日志中給出了語句執行結果、data步中生成資料集的觀測數(行)和變量數(列),以及proc步讀取的觀測數,還有運作所有data步和proc步所花費的實際時間和cpu時間。“日志”視窗還可顯示程式中的put語句輸出,這個在本示例中沒有涉及。

《深入解析sas:資料處理、分析優化與商業應用》一1.5 一個簡單的SAS程式

要養成送出代碼運作後首先檢視“日志”視窗資訊的良好習慣,檢查日志中是否有錯誤或警告資訊。很多時候,特别是當送出代碼量較大時,即使前面的data步或proc步運作失敗,後續代碼語句仍然會繼續運作,但是可能會導緻不正确的結果。是以必須檢查日志中是否有需要注意的錯誤或警告資訊。

接下來看看“輸出”視窗。“輸出”視窗展示sas會話期間sas語句的清單輸出。sas視窗環境預設不産生清單輸出。嘗試在上述代碼的基礎上稍作修改:改變輸出标題和産生清單輸出,并在print過程後關閉清單輸出。修改後的代碼如下:

送出運作後,在預設打開的“結果檢視器”中,html檔案在包含本次代碼輸出的同時,還包含了上次送出代碼産生的輸出。在“結果”和“結果檢視器”視窗都可以看到第二次運作結果的标題為我們在程式代碼裡指定的“倉庫庫存”。展開結果視窗的葉子節點,還可以看到第二次送出的代碼産生了兩類輸出: html輸出和清單輸出。單擊最後一個條目或單擊視窗條的“輸出-(無标題)”打開所産生的清單輸出,可以看到資料集資料也輸出到了輸出視窗,如圖1.10右下視窗所示。

《深入解析sas:資料處理、分析優化與商業應用》一1.5 一個簡單的SAS程式

到這裡,已經了解如何在sas視窗環境中編輯一個簡單的sas程式、送出sas程式并檢查sas程式的運作日志、檢視結果和輸出。下面來看看基于sas 9.4釋出的另一可以互動方式送出sas程式語句的web應用sas studio。