




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
深入解析SAS數據處理、分析優化與商業應用目錄\h第一篇SAS編程和數據處理\h第1章BaseSAS基礎\h1.1SAS系統簡介\h1.2啟動SAS軟件\h1.3SAS窗口環境\h1.4SAS文件和邏輯庫\h1.5一個簡單的SAS程序\h1.6SASStudio\h1.7本章小結\h第2章讀取外部數據到SAS數據集\h2.1SAS編程基本概念\h2.2通過DATA步讀取數據\h2.3通過IMPORT過程讀取外部文件數據\h2.4訪問關系型數據庫系統中的數據\h2.5SAS程序錯誤及處理\h2.6本章小結\h第3章對單個數據集的處理\h3.1選取部分變量\h3.2操作數據集的觀測\h3.3創建新變量\h3.4循環和數組\h3.5SAS常用函數\h3.6將數據集寫出到外部文件\h3.7本章小結\h第4章對多個數據集的處理\h4.1數據集的縱向串接\h4.2數據集的橫向合并\h4.3數據集的更新\h4.4數據集的更改\h4.5數據集處理的一點補充\h4.6本章小結\h第5章數據匯總與展現\h5.1通過PRINT過程制作報表\h5.2通過TABULATE過程制作匯總報表\h5.3通過GPLOT過程制作圖形\h5.4通過GCHART過程制作圖形\h5.5ODS輸出傳送系統\h5.6本章小結\h第6章SASSQL語言\h6.1SQL語言概述\h6.2使用SQL檢索數據\h6.3使用SQL對表進行橫向合并\h6.4使用SQL對表進行縱向合并\h6.5使用SQL管理表\h6.6本章小結\h第7章SAS宏語言\h7.1SAS宏語言概述\h7.2宏變量\h7.3宏函數\h7.4宏\h7.5宏語言與其他SAS語言\h7.6宏編程\h7.7本章小結\h第8章開發多語言支持的SAS程序\h8.1多語言支持的基本概念\h8.2NLS相關的SAS選項\h8.3NL格式和NL輸入格式\h8.4字符串和字符處理函數\h8.5文本字符串外部化\h8.6本章小結\h第二篇SAS統計分析和時間序列預測\h第9章描述性統計分析\h9.1基本概念\h9.2描述性統計量\h9.3MEANS過程的補充\h9.4本章小結\h第10章參數估計與假設檢驗\h10.1參數估計\h10.2假設檢驗\h10.3非參數假設檢驗\h10.4分布擬合假設檢驗\h10.5本章小結\h第11章方差分析\h11.1方差分析的基本原理\h11.2單因素試驗的方差分析\h11.3顯著因素下的水平間差異檢驗\h11.4雙因素試驗的方差分析\h11.5本章小結\h第12章主成分分析與因子分析\h12.1主成分分析概述\h12.2使用SAS實現主成分分析\h12.3因子分析概述\h12.4使用SAS實現因子分析\h12.5本章小結\h第13章聚類分析\h13.1聚類分析的概述\h13.2劃分法與層次法\h13.3本章小結\h第14章判別分析\h14.1判別分析概述\h14.2判別分析在SAS中的實現\h14.3本章小結\h第15章回歸分析\h15.1變量關系探索\h15.2線性回歸\h15.3自變量間的共線性診斷\h15.4本章小結\h第16章LOGISTIC回歸分析\h16.1基本原理\h16.2運用LOGISTIC過程擬合模型\h16.3LOGISTIC過程的其他語句\h16.4建立模型\h16.5本章小結\h第17章時間序列分析\h17.1時間序列基本概念\h17.2平穩時間序列分析\h17.3趨勢時間序列分析\h17.4季節時間序列模型\h17.5本章小結\h第18章SAS數據挖掘的一般流程\h18.1SAS數據挖掘概述\h18.2確定業務問題和數據準備\h18.3數據抽樣、探索與加工\h18.4數據建模\h18.5本章小結\h第三篇SAS優化建模\h第19章運籌學概述\h19.1運籌學發展簡介\h19.2優化模型的基本概念\h19.3優化模型的分類\h19.4優化建模步驟\h19.5SAS/OR簡介\h19.6一個簡單的OPTMODEL程序\h19.7本章小結\h第20章線性規劃\h20.1數學模型\h20.2單純形法\h20.3對偶理論和靈敏性分析\h20.4內點法\h20.5本章小結\h第21章運用PROCOPTMODEL建立線性規劃模型\h21.1基本概念\h21.2基本結構\h21.3建立模型\h21.4讀取SAS數據集\h21.5創建SAS數據集\h21.6本章小結\h第22章PROCOPTMODEL程序設計\h22.1PROCOPTMODEL中的流程控制方法與集合運算\h22.2模型的更新\h22.3網絡流模型\h22.4本章小結\h第23章整數線性規劃和混合整數線性規劃\h23.1整數線性規劃和混合整數線性規劃概述\h23.2使用PROCOPTMODEL求解混合整數線性規劃\h23.3使用0-1變量建模\h23.4本章小結\h第24章優化建模實例\h24.1集裝箱問題\h24.2運輸排程問題\h24.3本章小結\h第四篇SAS智能平臺架構體系\h第25章SAS智能平臺及行業解決方案\h25.1SAS智能平臺\h25.2SAS商業智能\h25.3SAS數據管理和集成\h25.4SAS商業分析\h25.5SAS高性能分析\h25.6本章小結\h第26章SAS應用的架構規劃\h26.1SAS應用的架構規劃\h26.2SAS應用的I/O系統規劃\h26.3本章小結\h第27章SAS智能平臺安全管理\h27.1身份標識\h27.2認證\h27.3授權\h27.4加密\h27.5安全性審計\h27.6本章小結\h第28章SAS智能平臺的高可用性\h28.1高可用性相關概念\h28.2SAS高可用性方法概述\h28.3SAS元數據服務器\h28.4SAS計算層\h28.5SAS中間層\h28.6數據層\h28.7本章小結注:原文檔電子版(非掃描),需要的請下載本文檔后留言謝謝。第一篇SAS編程和數據處理第1章BaseSAS基礎第2章讀取外部數據到SAS數據集第3章對單個數據集的處理第4章對多個數據集的處理第5章數據匯總與展現第6章SASSQL語言第7章SAS宏語言第8章開發多語言支持的SAS程序第1章BaseSAS基礎本章將從SAS系統開始,介紹BaseSAS的組成部分,并以Windows環境為例介紹SAS窗口環境、SAS邏輯庫、數據集、目錄(Catalog)等SAS中常用的概念。在了解了這些基礎知識之后,會引導讀者使用以上的知識編寫一段簡單代碼,提交執行,并查看日志及運行結果。最后將用簡短的篇幅簡單介紹SAS最新推出但將會承擔重要角色的SASStudio的基本功能。需要注意的是,本書中描述的內容會包括Windows和UNIX(和Linux)操作系統,如果在Windows和UNIX環境下的操作或命令有所不同,將會專門說明。本書內容未專門考慮Mainframe,因為其操作使用模式相差很多,而且讀者會較少接觸和使用Mainframe環境,但書中對SAS軟件和產品的描述、編程概念和程序語言以及給出的代碼在Mainframe環境下同樣適用。關于SAS的版本,本書是基于寫作時發布的最新版SAS9.4來展開的,除非特別說明,書中內容也同樣適用于較早的版本SAS9.3和SAS9.2。本章對BaseSAS窗口環境進行了著重介紹,目的在于讓讀者學會如何使用SAS窗口環境開發、運行SAS代碼,并查看結果和檢查代碼運行日志。但是書中不會介紹每個菜單、子菜單、工具欄以及其他在BaseSAS軟件中出現的元素和功能,因為讀者在實際學習和工作中可以很方便地通過SAS軟件提供的幫助文件進行了解。1.1SAS系統簡介SAS提供了一套集成的可擴展的解決方案和使用靈活、功能強大的SAS編程語言,用于執行如下任務:數據輸入和獲取、數據轉換處理和管理、報表繪制和圖形、統計和數學分析、商業規劃、預測、運籌優化,以及應用開發等。SAS可以在多種操作系統下運行,包括Windows、UNIX、Linux以及Mainframe等。同時,SAS程序代碼具有很好的移植性,在一種環境下開發的SAS代碼可以在其他操作系統下運行。SAS系統的核心BaseSAS由以下部分組成。·DATA步:用于處理和管理數據。·SAS過程(Procedure):用于分析、處理和制作報表。·可擴展和定制SAS軟件程序的宏語言(MacroFacility):可以減少程序文本,使SAS程序編寫得更有效且易于維護,便于編寫更為復雜的程序邏輯。·DATA步調試器:當提交的DATA步運行出錯或產生的輸出結果與預期不一致時,可以借助它來跟蹤DATA步的執行情況,從而幫助發現程序邏輯中的錯誤。·輸出交付系統(OutputDeliverySystem,ODS):該系統會產生各種易于訪問的格式輸出,例如,HTML文件、傳統的列表輸出、PostScript文件、RTF文件和輸出數據集等。·SAS窗口環境:它是一個開發和測試SAS程序的交互式圖形用戶界面,本節后面會有更進一步的介紹。這其中,前面3個是SAS語言的主要元素,本篇后面的章節會專門介紹。BaseSAS軟件提供數據處理過程和基礎的統計過程FREQ、MEAN、CORR及UNIVARIATE等,可以與其他的SAS產品一起使用,從而實現更強大的數據讀取、分析、優化、展示等功能。下面列出了部分常用的SAS產品,用于實現數據讀取、統計分析、優化和信息展示等功能。(1)SAS/ACCESS接口提供與各種第三方數據源進行交互的功能。例如各種關系型數據庫,諸如Oracle、DB2、Teradata等;ERP系統諸如SAPR/3、PeopleSoft等;同樣對于Hadoop等也有專門的ACCESS接口。對于不同的數據源,ACCESS接口需要單獨的軟件使用許可。SAS與第三方的數據源進行交互時,將直接調用該數據庫或應用廠商提供的客戶端對數據進行訪問,從而保證了與數據訪問的效率。此外,SAS/ACCESS還提供接口訪問MicrosoftAccess數據庫文件和Excel工作簿文件中的數據。(2)SAS/GRAPHSAS/GRAPH是SAS系統的數據可視化和展現(圖形)組件,用于數據和信息展現,并且它可通過二維和三維圖形(包括圖表、散點圖和地圖),可視化地展現數據值之間的關系。還可創建文本幻燈片、生成各種圖形輸出,并可提供實用程序和管理輸出。(3)SAS/STATSAS/STAT軟件提供了全面的統計分析方法,共有超過75個統計分析過程,包括T檢驗、方差分析(ANOVA過程)、聚類分析(CLUSTER過程、VARCLUSTER和FASTCLUS過程)、因子分析(FACTOR過程)、回歸分析(REG過程)、邏輯斯蒂(LOGISTIC過程)等。SAS/STAT軟件還包括效能和樣品容量分析(PSS)應用程序。該軟件不斷被更新,以反映新的研究成果和方法。(4)SAS/ETS提供用于經濟計量分析、時間序列分析和預測(ESM過程、ARIMA過程和UCM過程等)、系統建模與仿真(MODEL過程)、離散選擇分析、定性有限因變量模型分析、時間序列數據的季節性調整、財務分析和報告、訪問經濟和金融數據庫及時間序列數據的管理。除了以上過程外,SAS/ETS軟件還包括對經濟和金融數據庫以及互動環境的無縫訪問,從而進行時間序列預測及投資分析。(5)SAS/ORSAS/OR專注于運籌與優化。SAS/OR提供的OPTMODEL建模語言用于構建、解決和維護最優化模型的建模環境,通過OPTMODEL過程的各種求解器或單個過程,例如OPTLP、OPTMILP、OPTMILP過程,解決線性規劃、混合整數規劃、非線性規劃等問題。以BaseSAS軟件和以上產品與技術作為基礎,構建在SAS智能平臺(SASIntelligencePlatform)上的SAS許多商業解決方案,可以幫助各類商業客戶和其他組織機構解決諸多業務領域的特定問題,例如客戶智能、風險管理、供應鏈、零售等。關于SAS商業解決方案的內容,在本書的第四篇會有相應的介紹。1.2啟動SAS軟件SAS有多種運行模式:SAS窗口環境模式、非交互式模式、批處理模式及交互式行模式,下面會一一介紹。除了上面提到的4種模式外,SAS還可運行在對象服務器模式里,SAS元數據服務器、工作區服務器、存儲過程服務器和OLAP服務器都是屬于這種模式。關于這些服務器,在本書第四篇會進行討論。1.2.1SAS窗口環境模式SAS窗口環境是SAS提供的一種交互式圖形界面,是在Windows環境下使用SAS編輯或提交SAS程序語句最方便也是最常用的模式。在SAS窗口環境中,用戶可以通過程序編輯器編輯并提交SAS語句,程序語句的執行狀態、執行時間等日志信息及put語句的輸出會顯示在日志窗口,同時還會提供在線幫助等。本章下一節會使用Windows環境下的窗口環境作為示例,詳細介紹SAS窗口環境的各個窗口功能及其使用。在Windows環境下啟動SAS窗口環境和啟動其他Windows應用程序一樣有多種方式,可通過“開始”菜單里的快捷方式、命令行等方式進行。在安裝SAS軟件時,SAS軟件安裝程序會提示選擇要安裝的SAS語言版本。如果當前操作環境下安裝了多種語言的SAS,英文的SAS可以通過“開始”“程序”SASSAS9.4(English)啟動。啟動所有語言(包括英文)的SAS軟件時,其快捷方式位于“開始”“程序”SASAdditionalLanguages中。例如,啟動Windows操作環境下簡體中文SAS軟件的快捷方式為:“開始”“程序”SASAdditionalLanguagesSAS9.4(Chinese(Simplified)),如圖1.1所示。圖1.1啟動簡體中文SAS窗口環境此外,還可以使用命令行方式啟動SAS窗口環境。在下面給出的Windows和UNIX操作環境下的命令后,都可以指定其他系統選項來定制要啟動的SAS會話。例如,選項-NODATE表示在該SAS會話中產生的輸出頁面里不顯示日期,選項-CONFIG指定SAS配置文件,以在啟動時加載配置文件中更多的系統選項等。·Windows環境C:\>"C:\ProgramFiles\SASHome\SASFoundation\9.4\sas.exe"
·UNIX環境#/opt/SASHome/SASFoundation/9.4/sas-dms
UNIX環境下的命令行若不加選項-DMS,則會進入SAS的顯示管理系統。當使用Windows機器通過Telnet遠程登錄SAS軟件所在的UNIX主機時,如果需要使用SAS窗口環境,可以在該Windows機器上啟動X-Windows軟件,例如Exceed、XMing、Cygwin等,并設置當前Telnet會話的DISPLAY環境變量到該Windows機器上。這樣,所啟動的SAS窗口環境會重定向到該Windows操作系統。當啟動SAS的顯示管理系統時,在該Windows環境下會彈出類似的SAS窗口環境。在初次使用X-Windows窗口時會有些不習慣,有些操作與Windows環境下的SAS窗口稍有差異,但大部分都很類似。在UNIX環境下,更多使用的是非交互模式或批處理模式,或者其他的工具。例如,可使用Windows環境下的客戶端程序SASEnterpriseGuide將SAS代碼提交到UNIX服務器上。1.2.2非交互模式很多情況下,SAS程序保存在外部操作系統文件中,這時可以在不啟動SAS窗口環境的情況下非交互式地提交該文件。使用非交互模式執行保存在外部文件中的SAS程序語句時,SAS會打開該文件,執行該文件中的程序,并將日志和輸出根據操作環境寫入指定文件中。當該文件中的SAS程序執行完成時,SAS自動退出。下面是非交互模式下使用SAS執行外部文件中的SAS程序語句示例。·在Windows環境下的示例如下:C:\>"C:\ProgramFiles\SASHome\SASFoundation\9.4\sas.exe"-sysin
C:\sas\code\test.sas–logC:\sas\logs\test.log-print
C:\sas\lst/test.lst
·在UNIX環境下的示例如下:#/opt/SASHome/SASFoundation/9.4/sas–sysin/opt/sas/code/test.sas–log/opt/sas
/logs/test.log-print/opt/sas/lst/test.lst
選項“-sysin”指定SAS程序語句所在的文件。當要執行的SAS程序語句文件緊接著sas命令時,該選項可省略。“-log”指定輸出日志文件,“-print”指定執行輸出文件。1.2.3批處理模式在支持批處理或后臺執行的操作環境下,SAS還可運行在批處理模式中。用戶可以將上面的一個或多個非交互模式中的命令寫入批處理腳本,并保存在批處理.bat(Windows環境下)或.sh(UNIX環境)文件中,然后提交該批處理文件執行。當以批處理模式提交SAS作業時,會生成兩個文件,它們分別包含該作業執行的SAS日志和輸出。下面給出UNIX下的.sh文件內容,該批處理文件提交了兩個SAS程序執行test.sas和test2.sas。Windows環境下類似,但必須使用相應的腳本語法。#!/bin/sh
cd/opt/sas
/opt/SASHome/SASFoundation/9.4/sas/opt/sas/code/test.sas-log/opt/sas
/logs/test.log-print/opt/sas/lst/test.lst&
wait
Sleep15
/opt/SASHome/SASFoundation/9.4/sas/opt/sas/code/test2.sas-log/opt/sas
/logs/test2.log-print/opt/sas/lst/test2.lst&
wait
當使用調度軟件或操作系統調度命令對SAS作業進行預定執行時,通常使用該模式。這樣可以讓執行時間較長的SAS作業在晚間或其他預定時間執行,或根據業務需要定期自動執行。下面給出了在Windows和UNIX環境下使用操作系統計劃或預定功能批處理執行的示例。在SAS商業智能解決方案中這種模式也經常使用,SAS智能平臺也提供了與第三方調度軟件和操作系統調度服務的集成。1.Windows環境使用Windows提供的任務計劃程序,依次選擇“開始”“所有程序”“附件”“系統工具”“任務計劃程序”,并指定任務要執行的操作腳本為上面提到的批處理文件。如圖1.2所示為在Windows“任務計劃程序”中預定為在每天00:30:00執行的SAS作業,所設定操作的啟動程序為包含SAS命令的.bat文件。2.UNIX環境使用crontab命令預定上面提到的批處理文件。下面的crontab文件內容給出了預定在每天凌晨00:30:00執行批處理文件sasjob.sh中的作業。3000***/bin/ksh/opt/sas/scheduler/sasjob.sh>/opt/sas/scheduler/sasjob.log2>&1
圖1.2Windows環境下的“任務計劃程序”窗口1.2.4交互式行模式該模式在UNIX操作系統中可用,是一種較少使用的模式。但作為SAS支持的啟動模式,在這里也簡單地介紹一下。在交互行模式下,順序地輸入程序語句,所輸入的DATA步或PROC步當遇到RUN、QUIT、分號、另一個DATA步或PROC步,或者ENDSAS語句時會提交執行。同時隨著DATA步或PROC步的提交,這些程序語句的日志和輸出(如果有輸出的)也會立即顯示。可使用NODMS或NODMSEXP系統選項啟動交互式行命令模式的SAS會話。使用NODMS選項的命令示例如下:#/opt/SASHome/SASFoundation/9.4/sas–nodms
后面還可以接其他系統選項或使用-CONFIG選項指定SAS配置文件。按EOF鍵(Ctrl+D組合鍵)或提交ENDSAS語句將結束交互式行命令模式的SAS會話。示例如下:5?endsas;
1.2.5配置文件和AUTOEXEC文件使用上述任何一種模式啟動SAS時,都可以通過定義配置文件和AUTOEXEC文件來定制SAS會話。在這兩個文件中可以指定系統選項和任何時候啟動SAS會話時自動執行的SAS語句。SAS系統選項控制SAS會話的許多方面,包括輸出目的地、程序執行效率及SAS文件和邏輯庫的屬性等。SAS配置文件的名稱為sasv9.cfg,AUTOEXEC文件的名稱為auoexec.sas,這些文件通常都位于SAS的安裝根目錄下。在多語言安裝環境中,SAS根目錄下的nls目錄中還包括各種語言適用的SAS配置文件所在目錄,例如en是英文、zh是簡體中文、zt是繁體中文。啟動SAS時如果不指定配置文件,在Windows操作環境下,SAS會去查找SAS安裝根目錄下的sasv9.cfg文件。通過Windows“開始”菜單啟動各種語言的SAS軟件時,SAS會自動調用對應語言的配置文件。而在UNIX操作環境中,SAS啟動時所使用的配置文件是在啟動SAS的文件中指定的。有時,也會需要定制SAS啟動時的配置文件。一個比較實際的例子就是,在很多商業項目中,不希望SAS使用其默認的臨時邏輯庫(邏輯庫的知識會在后面介紹)WORK,而是希望將臨時邏輯庫WORK建立在一個高速存儲系統中,以提高SAS對某些常用操作的效率,這時就可以在配置文件中指定臨時WORK的物理位置。在Windows環境下使用定制的配置文件sasv9_custom.cfg的示例如下。在該示例中,假定該文件位于目錄C:\ProgramFiles\SASHome\SASFoundation\9.4下(在UNIX環境下類似)。C:\>"C:\ProgramFiles\SASHome\SASFoundation\9.4\sas.exe"-config
"C:\ProgramFiles\SASHome\SASFoundation\9.4\sasv9_custom.cfg"
系統選項AUTOEXEC用于指定AUTOEXEC文件。AUTOEXEC文件包含啟動SAS或其他SAS進程時自動執行的SAS語句,例如該文件可包含一些定義在SAS會話中的經常使用的SAS邏輯庫的LIBNAME語句。SAS啟動時,如果沒有指定AUTOEXEC或NOAUTOEXEC選項,SAS會在當前目錄、用戶目錄和SAS安裝根目錄下查找AUTOEXEC文件。可以在啟動SAS的命令行里指定AUTOEXEC選項,還可以通過SASV9_OPTIONS環境變量將該選項放入配置文件里。在Windows環境下通過命令行指定autoexec文件autoexec_custom.sas的示例如下。在該示例中,假定該文件位于目錄C:\ProgramFiles\SASHome\SASFoundation\9.4下(在UNIX環境下類似)。C:\>"C:\ProgramFiles\SASHome\SASFoundation\9.4\sas.exe"-AUTOEXEC
"C:\ProgramFiles\SASHome\SASFoundation\9.4\autoexec_custom.sas"
1.3SAS窗口環境SAS窗口環境是一個開發、調試和運行SAS程序的交互式圖形用戶界面。通過SAS窗口環境,用戶可以交互式地編輯和執行SAS代碼、顯示SAS日志、查看SAS過程的輸出以及在線幫助,同時還可以通過圖形界面操作數據和改變SAS系統設置。SAS窗口環境通常在Windows系統下使用,所以本書后面的章節都將以Windows環境下的SAS窗口環境進行說明。SAS軟件啟動后的界面包括菜單、命令框、工具欄、窗口、窗口條以及狀態欄,同時還支持浮動菜單、Windows環境快捷鍵(比如粘貼快捷鍵Ctrl+C及剪貼板功能),以及BaseSAS軟件本身提供的快捷鍵(比如,提交代碼執行“F3”)。SAS菜單包括在當前上下文環境下可選擇的選項列表,當正在使用的窗口發生變化時,菜單項會隨之發生變化。例如,如果當前窗口是“資源管理器”,那么菜單視圖會顯示在“資源管理器”窗口可用的視圖選項。如果“程序編輯器”是當前窗口,那么菜單視圖會顯示在“程序編輯器”窗口可用的視圖選項。“工具欄”則顯示為窗口按鈕或圖標。當單擊“工具欄”里的工具項時,會產生對應的功能或動作。例如,單擊“工具欄”里打印機的圖標會開始打印過程。同樣工具欄中的可選工具項也和當前的活動窗口相關。命令框位于工具欄左側。可以在命令框輸入命令行,例如打開SAS窗口和獲取幫助信息。下面來介紹SAS窗口環境的6個主要窗口:“程序編輯器”、“日志”、“輸出”、“結果”、“SAS資源管理器”和“編輯器”。第一次啟動時,默認打開的窗口為“程序編輯器”、“日志”、“輸出”和“SAS資源管理器”窗口,“輸出”窗口隱藏在其他窗口后面。所打開的窗口和窗口布局與SAS所在的操作環境相關,例如,在Windows環境下,“增強型編輯器”會代替“程序編輯器”。如圖1.3所示為Windows環境下BaseSAS軟件的窗口環境,其中“結果”窗口和“SAS資源管理器”共用窗口,可通過窗口下端的選項卡進行切換。提交SAS程序執行完成后,默認的HTML輸出會展示在“結果”窗口中。圖1.3Windows環境下的SAS窗口環境在任一時間,將只有一個窗口處于激活狀態,該窗口稱為當前窗口或活動窗口,可以通過單擊“窗口條”的窗口標簽激活對應窗口。在命令欄輸入相應命令并按回車鍵,或在菜單視圖的子菜單中也可以打開并激活對應的窗口。1.3.1SAS資源管理器“SAS資源管理器”(Explorer)窗口用于管理該窗口環境中的文件,包括查看SAS文件列表、創建新的SAS文件,查看、添加或刪除邏輯庫,創建外部文件的快捷方式,移動、復制和刪除文件,打開相關的窗口(比如新建邏輯庫窗口)等。該窗口最常用的功能是管理邏輯庫及邏輯庫中的SAS文件,相關內容將在1.4節介紹。“SAS資源管理器”以樹狀結構管理當前SAS環境中的文件,最上層顯示的圖標為“邏輯庫”、“文件快捷方式”、“收藏夾”和“計算機”,如圖1.3所示。可以通過雙擊每個圖標進入其下層的內容或打開一個文件。如果當前不在最上層,可以通過菜單“視圖”向上一級,或工具欄上的工具項,返回至上一級。還可通過菜單“視圖”顯示樹狀結構打開兩級窗口。“SAS資源管理器”窗口可通過在命令框中輸入EXPOLORE并按回車鍵來打開,或者選擇菜單“視圖”“SAS資源管理器”打開。1.3.2程序編輯器“程序編輯器”(ProgramEditor)窗口用于輸入、編輯、提交和保存SAS程序。該窗口還可通過在命令框輸入PROGRAM或PGM并按回車鍵來打開,或者選擇菜單“視圖”“程序編輯器”打開。默認設置下,在“程序編輯器”窗口中,代碼提交后就會被清除,可在命令框中輸入recall重新顯示。可通過修改如下設置來取消清除代碼:在當“程序編輯器”窗口為活動窗口時,選擇菜單“工具”“選項”“程序編輯器”打開的“程序編輯器選項”對話框的“編輯”選項卡,取消勾選“提交時清除文本”選項。此外,在該對話框中還可以修改其他設置。在Windows環境下,默認打開的“程序編輯器”窗口為“增強型編輯器”。“增強型編輯器”具有更加豐富的功能,可折疊和展開代碼段,還可以通過設置使其在窗口左側邊緣顯示行號。可通過在命令框輸入wnextedit或wpgm并按回車鍵來打開或切換“增強型編輯器”,或者選擇菜單“視圖”“增強型編輯器”打開。在編輯器中輸入的SAS程序代碼可保存到文件系統的文件中。1.3.3日志“日志”(Log)窗口可查看當前SAS會話和SAS程序的消息。如果提交的程序產生意外結果,日志消息會提示錯誤信息,可以幫助找出SAS程序或設置的錯誤。如果SAS程序中有PUT語句,那么該輸出默認會寫到SAS日志中。在命令框輸入LOG并按回車鍵,或選擇菜單“視圖”“日志”,可打開“日志”窗口。日志同樣也可保存到文件系統中,以便于以后查看。作為SAS開發或使用人員,要養成每次代碼提交執行完成后首先檢查SAS日志的習慣。1.3.4結果通過“結果”(Results)窗口可查看在該窗口環境提交的SAS代碼的輸出列表。在SAS9.4中,默認輸出為HTML格式。“結果”窗口以樹形結構列出SAS程序代碼執行后產生的輸出。提交SAS代碼后,HTML內容顯示在“結果瀏覽器”窗口,文件名稱展示在“結果”窗口中。可以查看、保存或打印單個結果文件。在命令欄輸入ODSRESULTS并按回車鍵,或者選擇菜單“視圖”“結果”,可打開“結果”窗口。1.3.5輸出可通過“輸出”(Output)窗口查看SAS程序的列表(LISTING)輸出。默認情況下,“輸出”窗口位于其他窗口后面。當SAS程序產生了列表輸出時,“輸出”窗口會自動移動到顯示前面。可在命令欄輸入OUTPUT、OUT、LISTING或LST并按回車鍵來打開“輸出”窗口,或者選擇菜單“視圖”“輸出”打開。從SAS9.3開始,SAS的默認輸出從列表輸出變成了HTML。可以通過ODS語句打開列表輸出,產生列表輸出的同時也會生成HTML,不再需要列表輸出時可再使用相應的ODS語句關閉該類型輸出。還可使用菜單“工具”“選項”“參數選擇”對話框的“結果”選項卡,選擇輸出類型和設置系統參數,參數選擇對話框的默認設置如圖1.4所示。勾選“創建列表”復選框會打開SAS軟件的列表輸出,還可選擇HTML的樣式,默認為HTMLBlue。圖1.4結果參數設置1.4SAS文件和邏輯庫在熟悉了SAS窗口環境后,接下來了解一下SAS文件和SAS管理文件的方式。SAS文件是指由SAS創建、維護和管理,并且SAS知道其結構的文件,例如SAS數據集、目錄(Catalog)等。通常這些文件也表現為操作環境中的文件,操作環境也會對它們進行管理。所有的SAS文件都存在于SAS邏輯庫中。SAS邏輯庫用于組織、查找和管理SAS文件。在SAS中,通過該文件所在邏輯庫及文件名來使用SAS文件。SAS數據集由SAS創建和管理,是SAS存儲和處理數據的主要方式。根據其文件是否包含數據值分為SAS數據文件和SAS視圖。SAS數據文件和SAS視圖可以簡單理解為與我們經常使用的數據庫管理系統中的表和視圖。關于SAS邏輯庫和數據集將在第2章進行更詳細的講解。SAS目錄(Catalog)是一種特殊的SAS文件,以目錄項的形式存儲多種不同類型信息。一個SAS目錄可包含多種類型的目錄項,這些目錄項包含系統信息(例如功能鍵定義)和應用程序信息(例如窗口定義、幫助窗口、格式(Format)、讀入格式(Informat)、宏(Macro)或圖形輸出)。下面通過“SAS資源管理器”窗口瀏覽SAS邏輯庫及SAS文件。啟動SAS窗口環境,在“SAS資源管理器”窗口雙擊“邏輯庫”sashelp。如圖1.5所示的界面給出了當前環境下SAS系統中的邏輯庫:Maps、Mapsfgk、Mapssas、Sashelp、Sasuser和Work。邏輯庫Sashelp中的SAS文件如圖1.6所示,圖標為數據集,圖標為SAS目錄。SAS目錄還可打開顯示更小的單元目錄項。圖1.5SAS邏輯庫圖1.6SAS數據集和目錄SAS除了可以處理SAS文件外,還可以處理外部文件和數據庫管理系統(DatabaseManagementSystem,DBMS)文件。SAS處理的外部文件指由操作系統管理和維護的數據或文本文件。外部文件通常用于存儲SAS需要處理的原始數據、SAS程序語句和過程運行結果(HTML,PDF格式)等,SAS有時也會將一些結果寫入外部文件。同時,SAS還可以通過特定的SAS/ACCESS接口軟件從其他廠商的軟件系統(例如數據庫管理系統(DBMS))文件中讀取和寫入數據。通過SAS/ACCESS接口軟件建立到DBMS的SAS邏輯庫后,SAS軟件可以像訪問SAS數據集一樣訪問DBMS中的表。1.5一個簡單的SAS程序在了解了SAS窗口環境并簡單了解了SAS邏輯庫、數據集這些基礎概念后,就可以在SAS窗口環境編輯一個簡單的SAS程序,提交運行并查看結果了。SAS程序由DATA步和過程步組成。DATA步由關鍵字DATA開始,過程步由關鍵字PROC開始。當然SAS程序還可以包括宏語言,這個會在本篇后面的章節中專門介紹。啟動SAS窗口環境,在“程序編輯器”窗口輸入下面的代碼。libnamesaslibbase'c:\sas\data';
datasaslib.Inventory;
inputProduct_ID$InstockPrice;
datalines;
P001R12125.00
P003T3440.00
P301M23500.00
PC02M12100.00
;
procprintdata=saslib.inventory;
run;
代碼前面的部分之前已經介紹過。LIBNAME語句定義物理路徑在c:\sas\data的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:\sas\data文件夾存在,如果沒有,在對應的目錄創建一個,否則在“日志”窗口會提示錯誤及錯誤信息。選擇菜單“運行”“提交”,或單擊“工具欄”中的工具項、按快捷鍵F3提交代碼。默認情況下代碼提交執行后,包含運行結果的文件HTML會產生,并自動顯示為當前活動窗口,而主窗口左側則會顯示結果列表,如圖1.8所示。在圖1.8中,數據集Inventory的觀測值和變量以表的形式展現在了HTML格式的“結果查看器”中。其中,“SAS系統”字樣是SAS系統默認標題。可以在PRINT過程之前使用TITLE語句指定輸出標題或在PRINT過程中指定標題,通常我們會指定有意義的文字,比如“倉庫庫存”。指定的標題在整個SAS會話期間一直有效,如果要使用其他輸出標題或恢復默認標題,可以再次使用TITLE語句指定。此外,還可以指定結果的多級標題和腳注,這里不贅述。圖1.7編輯SAS程序代碼圖1.8SAS程序運行結果可以通過“結果”窗口的條目在“結果查看器”的HTML文件中導航。在圖1.8所示的“結果”窗口展開“Print:SAS系統”,并單擊HTML條目,該條目對應的結果會自動展示在“結果查看器”的當前位置。在代碼運行過程中,運行日志會顯示在“日志”窗口。單擊窗口條的“日志-(無標題)”可顯示日志信息,如圖1.9所示。日志中給出了語句執行結果、DATA步中生成數據集的觀測數(行)和變量數(列),以及PROC步讀取的觀測數,還有運行所有DATA步和PROC步所花費的實際時間和CPU時間。“日志”窗口還可顯示程序中的PUT語句輸出,這個在本示例中沒有涉及。圖1.9SAS代碼運行日志信息注意要養成提交代碼運行后首先查看“日志”窗口信息的良好習慣,檢查日志中是否有錯誤或警告信息。很多時候,特別是當提交代碼量較大時,即使前面的DATA步或PROC步運行失敗,后續代碼語句仍然會繼續運行,但是可能會導致不正確的結果。所以必須檢查日志中是否有需要注意的錯誤或警告信息。接下來看看“輸出”窗口。“輸出”窗口展示SAS會話期間SAS語句的列表輸出。SAS窗口環境默認不產生列表輸出。嘗試在上述代碼的基礎上稍作修改:改變輸出標題和產生列表輸出,并在PRINT過程后關閉列表輸出。修改后的代碼如下:libnamesaslibbase'c:\sas\data';
datasaslib.Inventory;
inputProduct_ID$InstockPrice;
datalines;
P001R12125.00
P003T3440.00
P301M23500.00
PC02M12100.00
;
odslisting;
title'倉庫庫存';
procprintdata=saslib.inventory;
run;
odslistingclose;
提交運行后,在默認打開的“結果查看器”中,HTML文件在包含本次代碼輸出的同時,還包含了上次提交代碼產生的輸出。在“結果”和“結果查看器”窗口都可以看到第二次運行結果的標題為我們在程序代碼里指定的“倉庫庫存”。展開結果窗口的葉子節點,還可以看到第二次提交的代碼產生了兩類輸出:HTML輸出和列表輸出。單擊最后一個條目或單擊窗口條的“輸出-(無標題)”打開所產生的列表輸出,可以看到數據集數據也輸出到了輸出窗口,如圖1.10右下窗口所示。圖1.10定制標題和列表輸出到這里,已經了解如何在SAS窗口環境中編輯一個簡單的SAS程序、提交SAS程序并檢查SAS程序的運行日志、查看結果和輸出。下面來看看基于SAS9.4發布的另一可以交互方式提交SAS程序語句的Web應用SASStudio。1.6SASStudioSASStudio是基于HTML5客戶端/服務器結構的Web應用。通過SASStudio,用戶能夠以使用與SAS窗口環境類似的方式提交SAS程序語句,運行并獲取結果,同時它還提供交互方式指導用戶完成分析過程。用戶通過SASStudio編寫的代碼或圖形界面產生的分析過程會提交到本地或遠程的SAS軟件上執行,結果返回SASStudio客戶端。這種特性會使SASStudio承擔SAS的PaaS(PlatformasaService,平臺即服務)中重要角色,SASStudio也會集成到SAS云基礎設施中。該產品有著豐富的操作界面,這里簡單了解一下。SASStudio3.1的窗口如圖1.11所示,其中包含以下3個部分:·窗口頂部,包含在SASStudio中開發的應用程序名稱和應用程序按鈕。應用程序名稱如圖1.11中的“程序1.sas”、“分布分析1”和“直方圖1”。·窗口的左側是具有多個可折疊條目的導航面板。導航面板提供的條目包含“搜索”、“文件夾”、“任務”、“代碼段”、“邏輯庫”和“文件快捷方式”。·右側窗口(工作區)包括主要的選項卡,可以顯示SAS表,文本文件(例如,SAS程序文件)、任務等,顯示哪一個取決于當前執行的操作。圖1.11SASStudio開發SAS程序通過這些窗口,用戶可搜索文件夾、文件、SAS邏輯庫、SAS表、表的列,還可以查看用戶可用的文件夾和文件、代碼段、SAS邏輯庫及邏輯庫中的表、文件快捷方式等,并且可使用“任務”窗口提供的那些預先定義的任務,以圖形界面操作交互方式實現多種分析過程。如圖1.12所示是邏輯庫sashelp中的shoes數據集的列Sales生成直方圖的例子。選擇“任務”“圖形”“直方圖”,在中間子窗口選擇數據源和分析變量,最右側子窗口會顯示自動生成的代碼。該代碼可保存為代碼段或直接提交到SAS服務器執行生成直方圖。圖1.12SASStudio生成直方圖1.7本章小結學習了本章內容后,相信讀者對SAS軟件、SAS在Windows和UNIX環境下的各種啟動方式,以及對SAS編程IDE環境(即SAS窗口環境和SASStudio)已經有了一些初步的了解,這會為后面的學習打下基礎,可方便讀者更加深入地學習SAS軟件,并熟練使用SAS窗口環境完成數據處理和分析任務等。第2章讀取外部數據到SAS數據集SAS提供豐富的數據處理和分析方法來解決各種商業問題,但在使用這些方法之前,往往需要首先將各種形式的數據轉換成SAS數據集。如圖2.1所示是在SAS中從原始數據到最后生成有價值信息的過程示意圖。可以看出,在這個過程中,首要工作是將需要分析的原始數據轉換成SAS數據集,然后才是運用各種PROC步對數據集里的數據進行處理和分析,最后將分析結果以適當的形式展現出來。圖2.1數據分析處理過程本章在介紹SAS編程過程中經常使用的SAS邏輯庫、SAS數據集、系統選項以及SAS程序結構等基本概念之后,將會重點講解如何開發SAS程序讀取外部數據源中的原始數據,創建SAS數據集。最后簡單介紹在SAS程序開發中常見的幾種錯誤現象及其處理方法。2.1SAS編程基本概念在SAS系統中,SAS程序是用來獲取外部數據、處理和管理數據,并對其進行分析預測和優化,從而生成信息報告的重要工具。在學習開發SAS程序之前,首先需要理解兩個基本概念:SAS數據集和邏輯庫,包括它們的命名、引用、類別等;然后得了解SAS中會經常使用的系統選項,這些系統選項讓SAS的分析處理功能既靈活又強大。2.1.1SAS邏輯庫SAS邏輯庫是一個或多個SAS文件的集合,用于組織、查找和管理SAS文件。SAS邏輯庫管理的SAS文件包括SAS數據集、SAS目錄、已編譯的SAS程序,以及多維數據庫文件等。在Windows和UNIX環境中,SAS邏輯庫通常是包含在同一個文件夾或目錄下的一組SAS文件,其他文件也可以存儲在該文件夾或目錄下,但只有具有SAS文件擴展名的那些文件會被認為是該SAS邏輯庫的一部分。在其他操作系統下,SAS邏輯庫有不同的實現方式,但通常都對應于當前操作系統用來訪問和存儲文件的組織級別。例如在z/OS(OS/390)操作系統下,SAS邏輯庫是只能存儲SAS文件的特殊格式化了的主機數據集。盡管實現方式不一樣,但在SAS支持的各種操作系統下,SAS邏輯庫的使用方式是相同的。還有一種SAS邏輯庫,叫作元數據邊界邏輯庫(metadata-boundlibrary),是綁定在由元數據提供安全訪問控制的對應表對象上的物理邏輯庫。元數據邊界邏輯庫里的每個物理表都有指向特定元數據對象的信息,同時還創建了物理表和元數據對象之間的安全性綁定。該綁定保證了用戶在訪問該物理表時,SAS強制執行元數據層權限要求,從而避免從操作系統直接訪問該物理表導致的安全問題。這種SAS邏輯庫在SAS智能分析平臺中可用,在本章不作介紹。1.邏輯庫關聯可以通過LIBNAME語句、LIBNAME函數、使用“新建邏輯庫”窗口或操作環境命令來定義邏輯庫,并將SAS邏輯庫與對應的邏輯庫引用名關聯起來。之后便可以通過該邏輯庫引用名來讀取、寫入并更新SAS邏輯庫中的SAS文件。使用LIBNAME語句定義SAS邏輯庫的簡化語法如下:LIBNAME邏輯庫引用名<邏輯庫引擎>'邏輯庫物理位置';
(1)邏輯庫引用名在定義SAS邏輯庫時需要指定邏輯庫引用名,臨時邏輯庫WORK除外。SAS邏輯庫引用名的命名規范如下:·最大長度是8個字符。·必須以字母(從A~Z,大小寫均可)或下劃線(_)開始。·可以是數字(0~9)、字母和下劃線(_)的任意組合。例如,下面的SAS語句定義了SAS邏輯庫,其引用名為saslib。libnamesaslibbase'c:\sas\data';
注意SAS邏輯庫與SAS邏輯庫引用名是兩個比較容易混淆的概念。SAS邏輯庫是SAS文件的集合,SAS文件是其組成部分;而SAS邏輯庫引用名是我們定義邏輯庫時賦予這個邏輯庫的引用名,并且在以后可以通過該邏輯庫引用名來訪問邏輯庫中的SAS文件。永久邏輯庫(即其中的SAS文件)會一直存在,而通常SAS邏輯庫引用名僅在當前SAS會話中有效,除非使用“新建邏輯庫”窗口指定邏輯庫時勾選了“啟動時啟用”選項。永久邏輯庫和“新建邏輯庫”窗口,在后面都有介紹。(2)邏輯庫引擎SAS邏輯庫引擎是SAS軟件和SAS邏輯庫之間的接口軟件組件,每個SAS邏輯庫都關聯一種邏輯庫引擎。邏輯庫引擎識別邏輯庫中的文件并以SAS可理解的格式將文件內容呈現給SAS。SAS提供多種引擎以管理多個格式的數據。通過這些引擎SAS可以進行如下操作:存儲和訪問磁盤文件,將數據從物理位置放入內存中,讀取其他軟件產生的數據庫文件,以及在不同操作系統之間遷移SAS文件等。邏輯庫引擎可分為原生邏輯庫引擎和接口邏輯庫引擎。原生邏輯庫引擎也就是默認的Base引擎,訪問由SAS創建和處理的SAS文件。在創建新邏輯庫時如果不指定引擎,SAS會自動選擇BaseSAS引擎。該引擎根據自身版本的不同,可處理SAS7、SAS8和SAS9文件,這些文件對應的版本引擎名稱分別為V7、V8和V9。大多數情況下,SAS9可以直接處理SAS8、SAS7和SAS6創建的SAS文件,不需要對其進行轉換。關于版本兼容性可能存在的問題及對應解決方法,可參考SAS幫助文檔學習。接口邏輯庫引擎用來訪問由其他軟件系統(例如關系型數據庫系統、ERP系統等)管理的數據。接口邏輯庫對用戶不透明,需要顯式指定引擎名稱,并且需要相應的SAS/ACCESS軟件許可,而且通常還需要安裝相應的數據庫管理系統的客戶端軟件。例如要訪問Teradata數據庫管理系統中的數據文件,要有SAS/ACCESStoTeradataInterface的許可,并且在定義邏輯庫時,LIBNAME語句中要指定對應的邏輯庫引擎為Teradata數據庫對應的引擎,同時還要安裝了Teradata提供的客戶端軟件。下面給出了定義原生邏輯庫和接口邏輯庫示例。·Base引擎相關代碼如下(語句中base選項可省略):libnamesaslibbase'c:\sas\data';
·SAS/ACCESStoTeradata引擎相關代碼如下:libnametdlibteradataserver=tera2650user=user1password=password1database=hps;
(3)邏輯庫物理位置SAS邏輯庫物理位置是一個或多個操作系統能夠識別的物理位置,或者是一個或多個已經定義了的其他SAS邏輯庫。在上面給出的Base引擎示例中,邏輯庫saslib的物理路徑為c:\sas\data。對于連接到數據庫管理系統的SAS邏輯庫,通常是通過一系列數據庫連接選項指定要訪問的數據庫管理系統的信息。如在SAS/ACCESStoTeradata引擎示例中,通過數據庫連接選項分別指定了Teradata數據庫服務器的名稱、使用的用戶名、密碼及數據庫名稱。SAS邏輯庫還可以有多個物理位置。下面的代碼示例給出了定義多個物理位置的SAS邏輯庫Y2014。這3段代碼都能實現將邏輯庫引用名Y2014與4個物理位置c:\sas\data\quater1、c:\sas\data\quater2、c:\sas\data\quater3和c:\sas\data\quater4相關聯。·代碼1:libnameY2014('c:\sas\data\quater1''c:\sas\data\quater2'
'c:\sas\data\quater3''c:\sas\data\quater4');
·代碼2:libnameQ1_2004'c:\sas\data\quater1';
libnameQ2_2004'c:\sas\data\quater2';
libnameQ3_2004'c:\sas\data\quater3';
libnameQ4_2004'c:\sas\data\quater4';
libnameY2014(Q1_2014Q2_2014Q3_2014Q4_2014);
·代碼3:libnameQ2_2004'c:\sas\data\quater2';
libnameQ3_2004'c:\sas\data\quater3';
libnameQ4_2004'c:\sas\data\quater4';
libnameY2014('c:\sas\data\quater1'Q2_2014Q3_2014Q4_2014);
當一個物理位置下的空間不夠時,定義多個物理位置的SAS邏輯庫非常有用。這樣,在寫程序時只需要使用一個SAS邏輯庫引用名,當前面的物理路徑空間用盡時,SAS會自動將寫入的SAS文件存儲到其他物理路徑。2.永久和臨時SAS邏輯庫SAS邏輯庫通常為永久數據庫。永久SAS邏輯庫存儲在計算機的固定存儲介質上,當SAS會話終止時不會被刪除,其中的SAS文件可以在后續的SAS會話中繼續使用。當使用永久SAS邏輯庫中的文件時,通常需要指定邏輯庫引用名作為兩層SAS文件名的第一部分,并且要告訴SAS該文件的存儲位置,例如saslib.Inventory,表明讀取或寫入SAS邏輯庫saslib中的Inventory文件、數據集或目錄(Catalog)等,至于Inventory具體指的是哪種SAS文件,與所使用的上下文環境有關。同時SAS還提供了一種在SAS會話或作業運行過程中存儲臨時數據和文件的臨時邏輯庫,其引用名為WORK。邏輯庫WORK不需要顯式指定,且僅在當前SAS會話或作業執行過程中存在。邏輯庫WORK中的文件在該SAS會話期間可用于任何DATA步或SAS過程,但如果SAS會話正常結束,WORK庫中的文件在SAS會話結束時會被自動刪除。一般情況下,可以通過指定一級名稱來讀寫這個邏輯庫中的SAS文件,同樣也可以使用二級名稱。例如,要引用臨時邏輯庫中的SAS文件Inventory,直接使用Inventory和使用work.Inventory的效果一樣。在開發SAS程序時,如果一次分析包含多個PROC步,通常會將前一個PROC步產生的中間數據或文件放入臨時邏輯庫中,供后面的分析過程使用。在分析完成時,這些中間數據或文件會自動清除。當然,良好的開發風格應該是在完成任務后,通過代碼顯式地刪除所產生的臨時數據。3.SAS系統邏輯庫SAS提供了4個特殊的系統邏輯庫:WORK、user、sashelp和sasuser。WORK是臨時邏輯庫,前面已經介紹過,其他3個都是永久邏輯庫。user邏輯庫可以使用LIBNAME語句、LIBNAME函數、系統選項USER=或操作系統顯式指定。指定user邏輯庫后,可以使用一級名稱讀取該邏輯庫中的文件,就像引用臨時邏輯庫中的文件一樣。一旦定義了SAS邏輯庫user,在SAS程序中使用一級名稱讀取或寫入任何SAS文件時,SAS都會在該user邏輯庫對應的物理位置查找或寫入相應的SAS文件。這時,如果要引用WORK邏輯庫中的文件,必須指定帶有WORK邏輯庫引用名的二級名稱。當SAS會話結束時,存儲在邏輯庫user里的文件不會被刪除。sashelp邏輯庫包含一組用于控制SAS會話各方面信息的目錄(Catalog)和其他文件。該邏輯庫中存儲的這些目錄和文件適用于任何使用該SAS系統的用戶。用戶的個性化設置會存儲在sasuser邏輯庫中。如果除了安裝BaseSAS軟件外,還裝了SAS的其他產品,那么這些產品需要用到的一些目錄也會包含在sashelp邏輯庫中。sasuser邏輯庫包含能夠定制SAS特征以滿足特定要求的SAS目錄。如果默認的sashelp邏輯庫對一些應用程序不適用,那么可以修改它們并將這些個性化的設置保存在sasuser邏輯庫中。例如,在SAS里,可以在名稱為file的個人Profile目錄中存儲個人默認的功能鍵設置或窗口屬性。2.1.2SAS數據集SAS數據集是存儲在SAS邏輯庫中、由SAS創建和處理的SAS文件,是SAS存儲數據的主要方式。SAS數據集包含以表的觀測(行)和變量(列)為形式存在的數據值,以及用以描述變量類型、長度和創建該數據集時所使用的引擎等信息的描述信息。根據其是否包含真正的數據值,SAS數據集可分為SAS數據文件和SAS視圖。SAS數據文件包含數據和描述信息,在邏輯庫中的成員類型是DATA;而SAS視圖不包含數據值,是指向其他數據源的虛數據集,成員類型是VIEW。下面分別介紹SAS數據集的文件內容、命名,各種SAS數據文件和SAS視圖,以及它們的創建方式。1.數據集文件如圖2.2所示給出了SAS數據集的邏輯組件,這些組件可能分布在操作系統下的不同文件中。圖2.2SAS數據集邏輯組件下面來具體看看圖2.2中的各個組件。·描述信息:描述了SAS數據集自身及其變量的屬性,包括觀測數、觀測長度、該數據集上次的修改日期等其他信息。其變量的描述信息包括名稱、類型、長度、輸入輸出格式、標簽,以及是否已經為該變量建立索引等屬性。·數據值:以矩形表的形式排列。一個數據集可包含若干個觀測(也稱為行),每個觀測通常由一個或多個變量(也稱為列)值組成。·索引:是單獨的SAS文件,可以為SAS數據文件創建索引,以提供對指定觀測的直接訪問。索引文件與其數據文件有著相同的名稱,但成員類型為INDEX。索引可提供對指定觀測更快的訪問,尤其是對較大的數據集而言。·擴展屬性:是定義在數據集或變量之上的元數據。擴展屬性使用DATASETS過程創建,表示為<名稱-值>對。下面以一個簡單的SAS數據集為例,來理解數據集的描述信息、觀測和變量。在SAS窗口提交如下代碼生成數據集:libnamesaslib'c:\sas\data';
datasaslib.Inventory;
inputProduct_ID$InstockPrice;
datalines;
P001R12125.00
P003T3440.00
P301M23500.00
PC02M12100.00
;
run;
使用CONTENTS過程打印數據集的屬性信息,代碼如下:proccontentsdata=saslib.inventory;
run;
CONTENTS過程生成的結果如圖2.3所示。其中包含了上面提到的數據集信息、主機相關信息和變量信息等。圖2.3數據集描述信息輸出提交PRINT過程代碼,打印數據集信息。procprintdata=saslib.inventorynoobs;
run;
上面代碼打印的數據集如圖2.4所示。圖2.4數據集數據值該數據集包含4個觀測,每個觀測表示一種產品的各類信息。這里有3個變量:Product_ID、Instock和Price,分別表示產品編號、庫存數和價格。其中P001R、12、125等均為數據值。2.數據集命名每個SAS數據集的完整名稱如下:libref.SAS-data-set.membertype。共3個組成部分,從左到右依次為邏輯庫引用名、數據集名稱和成員類型。在引用數據集時,通常會指定前兩個,SAS會根據上下文環境,例如該數據集出現的位置或數據集的自描述信息,來確定第三個。邏輯庫引用名是與SAS數據集所在物理位置相關聯的SAS邏輯庫名。當創建新數據集時,邏輯庫引用名表明要將該數據集保存在哪里(位置)。當引用SAS數據集時,邏輯庫引用名會告訴SAS在哪個邏輯庫中找到該數據集。數據集名稱遵守的SAS命名規則如下:·最大長度為32字符。·必須以字母(從A~Z,大小寫均可)或下劃線(_)開始。·可以是數字、字母和下劃線(_)的任意組合。成員類型由SAS指定,例如SAS數據文件的成員類型是DATA,SAS視圖的成員類型是VIEW。這些對開發SAS程序是透明的。在程序語句中創建和使用SAS數據集時,根據數據集所在的邏輯庫或要存儲的邏輯庫來確定使用一級或二級名稱。一級名稱只包含數據集名稱,用于讀寫臨時邏輯庫WORK中的數據集,或當邏輯庫user被指定時讀寫邏輯庫user中的數據集。二級名稱由邏輯庫引用名和數據集名稱組成,形式為libref.SAS-data-set,訪問除邏輯庫user之外的其他永久邏輯庫中的數據集時,均需要使用二級名稱。注意前面介紹過SAS數據文件和視圖都是SAS數據集。SAS不允許在相同的邏輯庫中存在數據集名稱相同的SAS數據文件和視圖。因為從語法上來講,同一程序語句可以同時接受SAS數據文件和SAS視圖,SAS不能從程序語句判斷需要處理的是哪一個文件。雖然在訪問WORK或user邏輯庫中的數據集時可以用一級名稱,即可省略邏輯庫引用名,但為了保持良好SAS代碼編寫風格,不建議省略。3.變量屬性SAS數據集變量的屬性包括變量名、類型、長度、輸出格式(format)、輸入格式(informat)和標簽(label)。輸出格式、輸入格式和標簽是變量的可選屬性。每個變量的變量名必須遵守的SAS命名規范如下:·最大長度為32字節。·必須以字母(從A~Z,大小寫均可)或下劃線(_)開始。·可以是數字、字母和下劃線(_)的任意組合。變量的類型是字符型或數字型。字符型變量可包含任何值,而數字型變量只能包含數字值(數字0~9、=、-、點(.)和科學計數法的E)。變量類型確定了變量的缺失值如何顯示。字符型變量缺失值是空格,而數字型的變量缺失值是點(.)。SAS以數字值存儲日期和時間。默認情況下,SAS的日期值指從1960年1月1日開始的天數,SAS使用從凌晨開始的秒數存儲時間值,SAS的日期時間值(datetime)指從1960年1月1日開始的秒數。該開始日期也可以通過系統變量YEARCUTOFF指定為其他值。下面提交如下代碼來生成數據集sales,并使用CONTETNS過程和PRINT過程分別打印該數據集的描述信息和數據值。libnamesaslib'c:\sas\data';
datasaslib.sales;
infiledatalinesdsdmissover;
inputEmp_ID$Dept$SalesDate;
formatSalesCOMMA10.Dateyymmdd10.;
informatDatedate9.;
labelEmp_ID="員工ID"Dept="部門"Sales="銷售數據";
labelDate="銷售時間";
datalines;
ET001,TSG,$10000,01JAN2012
ED002,,$12000,01FEB2012
ET004,TSG,$5000,02MAR2012
EC002,CSG,$23000,01APR2012
ED004,QSG,,01AUG2012
;
run;
proccontentsdata=saslib.sales;
run;
procprintdata=saslib.salesnoobslabel;
run;
如圖2.5所示為CONTENTS過程打印的部分結果,表示該數據集的變量屬性,其中,Date和Sales為數值型變量,Dept和Emp_ID為字符型變量。如圖2.6所示為PRINT過程的打印結果,可以看出,Dept(部門)的缺失值為空格,Sales(銷售數據)的缺失值為點(.)。圖2.5變量屬性圖2.6打印數據集變量的長度與類型有關。字符變量的長度可以在定義時給出,否則其長度為第一次賦值時值的長度,最大長度可到32K。數字型變量的默認長度是8個字節,也可以指定不同的長度。除了名稱、類型和長度外,還可以定義變量的輸出格式、輸入格式和標簽,這些都是可選屬性。格式(format)會影響數據值輸出的方式。SAS提供了各種字符、數字和日期時間格式。例如,為了將23000顯示為23000,必須使用COMMAw.d形式的輸出格式。其中w表示最大寬度,d為小數位數。比如,在圖2.5中,Date變量的輸出格式為“YYMMDD10.”,打印時該變量的形式則為YYYY-MM-DD(例如2012-01-01)。Sales的輸出格式為“COMMA10.”,對應的數據輸出形式則為10000。還可以創建并存儲自定義的格式,具體在第5章介紹。輸入格式(informat)指定數據值以特定的格式讀入,從而成為標準的SAS值。在讀取包含字母或其他特殊字符的數字值時必須使用輸入格式。例如,需要把輸入值“$23000”讀取為數字型的變量,則必須使用輸入格式DOLLARw.d才能正確讀入。自定義的格式也可以用作為輸入格式。SAS提供了豐富的輸入輸出格式用于從外部文件讀取各種日期格式和顯示各種日期格式,以滿足對各種日期格式的需要。在上面的示例中使用輸入格式“DATE9.”讀入了“01JAN2012”形式的日期,輸出時使用的是輸出格式“YYMMDD10.”,從而將存儲的數字顯示為“2012-01-01”。變量都可以有標簽(label)。標簽通常是描述該變量的文本,最大長度為256個字符。默認情況下,報表以變量名來標識變量,但是可以將一個標簽分配給相應的變量來顯示該變量的描述信息。上例中Emp_ID的標簽為“員工編號”,Dept的標簽為“部門”,Date的標簽為“銷售時間”,Sales的標簽為“銷售數據”。在代碼中可以看到PRINT過程使用了LABEL選項,這樣一來,打印的數據集表頭將會使用各變量的標簽而不是變量名稱。4.SAS數據文件與SAS視圖相比較,SAS數據文件是一種在其文件中包含數據的數據集。SAS數據文件可以由DATA步創建,其名稱在DATA語句中指定,還可以由PROC步創建,其名稱通常是在該PROC步語句或PROC步的OUTPUT語句中指定的。有時,如果程序沒有給輸出數據集指定名稱,SAS會使用默認名稱。有兩種類型的數據文件:原生SAS數據文件和接口SAS數據文件。原生數據文件是SAS格式的文件,用來存儲SAS格式的數據值和描述信息。接口數據文件是指數據以其他格式存在,并且SAS可以通過SAS/ACCESS接口引擎訪問的數據文件,例如存在于Oracle、DB2、Sybase、ERP系統中的數據文件。SAS通過SAS/ACCESS接口引擎來訪問這些文件中的數據,并將這些文件當作SAS數據集處理。SAS程序語句創建的是原生SAS數據文件還是接口SAS數據文件,取決于該數據文件所屬的邏輯數據庫。如果該邏輯庫是通過Base引擎定義的,則所生成的數據文件是原生數據文件,如果是通過SAS/ACCESS接口邏輯庫定義的,則所創建的是接口SAS數據文件。使用DATA步創建SAS數據文件的語法如下:DATA數據集名稱;
…SAS語句…;
RUN;
其中,SAS語句用于指定數據源。不同的數據源,SAS語句也不盡相同。例如DATELINES語句表示從程序語句中讀取數據,SET語句讀取指定的輸入數據集,INFILE語句讀取指定的外部數據文件等。上例中的DATA步給出了使用DATALINES語句讀取列舉輸入數據的一個示例。該代碼首先定義了一個物理路徑為c:\sas\data文件夾的SAS邏輯庫saslib,接著以DATA關鍵字開始的DATA步創建了存儲在邏輯庫saslib中的數據集Inventory。有些PROC步會在PROC語句或PROC步的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國直通式振動篩分機行業發展研究報告
- 2025至2030年中國鹽酸賽洛唑啉數據監測研究報告
- 2025至2030年中國白花苜蓿數據監測研究報告
- 2025至2030年中國白捷潔市場現狀分析及前景預測報告
- 2024年國網新源集團有限公司高校畢業生招聘(第一批)筆試參考題庫附帶答案詳解
- 2024年四川新火炬化工有限責任公司社會公開招聘筆試參考題庫附帶答案詳解
- 應對大額支出的策略計劃
- 團隊協作在倉庫管理中的重要性計劃
- 2024年三明寧化縣事業單位招聘考試真題
- 2024年福州市福清市事業單位招聘考試真題
- 【MOOC】宇宙簡史-南京大學 中國大學慕課MOOC答案
- 餐廳經營管理方案 餐廳的經營與管理計劃
- 公民基本權利課件
- 深度學習及自動駕駛應用 課件 第1、2章 汽車自動駕駛技術概述、深度學習基礎
- 糖尿病診治發展史
- 美團合作商騎手協議書范文模板
- 2024年湖北省高考化學試卷真題(含答案解析)
- 機器學習 課件 第7章 集成學習
- 視頻剪輯課件范文
- 健身房健身器材使用手冊
- 3.2有約必守 違約有責 課件-高中政治統編版選擇性必修二法律與生活
評論
0/150
提交評論