SAS (統計分析軟件)課件:第2章 SAS編程基礎_第1頁
SAS (統計分析軟件)課件:第2章 SAS編程基礎_第2頁
SAS (統計分析軟件)課件:第2章 SAS編程基礎_第3頁
SAS (統計分析軟件)課件:第2章 SAS編程基礎_第4頁
SAS (統計分析軟件)課件:第2章 SAS編程基礎_第5頁
已閱讀5頁,還剩60頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第2章 SAS編程基礎SAS語言組件 SAS 文件 由SAS創建、儲存、管理的文件就是SAS文件。所有的SAS文件都保存在SAS邏輯庫中。 最常用的SAS文件: SAS數據集 SAS目錄冊 SAS外部文件 SAS不能直接識別的數據文件稱為外部文件。外部文件一般用于儲存數據。外部文件一般用來儲存: 要讀入SAS數據文件的原始數據 SAS程序語句 過程步輸出DBMS文件SAS軟件可以和其它數據庫產品進行數據文件轉換。 SAS語言元素SAS語言由語句、表達式、選項、格式、以及和其它編程語言名稱類似的函數組成。SAS有兩種語句 數據步 過程步SAS文件系統 SAS邏輯庫由一組SAS文件組成。SAS軟件

2、系統的信息組織有兩層,第一層是SAS邏輯庫,第二層是SAS文件。SAS邏輯庫是一個邏輯概念,本身不是物理實體,它對應的實體是操作系統下一個文件夾或幾個文件夾中的一組SAS文件。 邏輯庫 邏輯庫名與引用SAS文件 邏輯庫名是SAS名,長度不能超過8個字節。如SAS邏輯庫:ResDat, SASHELP, SASUSER, WORK等。建立SAS邏輯庫的方法: 用菜單操作; 用LIBNAME語句。語句格式:LIBNAME libref SAS-data-library 語法說明:Libref 邏輯庫名 SAS-data-library 邏輯庫對應的物理地址Engine 引擎名稱(缺失時為默認引擎)

3、例2.1 用LIBNAME語句創建SAS邏輯庫。Libname ResDat d:ResDat;多個個文件夾創建一個SAS邏輯庫:Libname a (d:resbd,d:resfin);例2.2 引用非臨時庫的SAS文件時必須使用兩級命名方式,而引用臨時庫的SAS文件時,可以直接使用文件名,效果等同于work.文件名。data a; set ResDat.Idx000001;run;臨時庫和永久庫臨時邏輯庫是指它的內容只在啟動SAS時存在,退出SAS時內容完全被刪除。系統缺省的臨時邏輯庫為WORK.永久邏輯庫是指它的內容在SAS關閉對話之后仍舊保留,直到再次修改或者刪除。SAS系統中除了WO

4、RK以外的邏輯庫都是永久庫。庫引擎庫引擎是一組規定格式向邏輯庫讀寫文件的內部指令。利用庫引擎SAS系統可以直接訪問其它SAS版本創建的SAS文件和外部數據庫格式的數據文件。 每個SAS邏輯庫都對應一個庫引擎。庫引擎功能包括: 讀取和寫入數據; 列出庫中的文件; 刪除和重命名文件。SAS通過不同庫引擎讀寫不同格式的文件。每個SAS引擎都有著自身的運行特性。比如 運行由舊版本SAS軟件生成的文件; 讀取由其它軟件生成的數據庫文件; 存儲和訪問硬盤或者tape上的文件; 決定文件中的變量和觀測如何放置; 將文件從物理位置地址讀取放入到內存; 在不同的操作系統之間傳輸SAS文件。數據集 SAS數據集有

5、兩類: SAS數據文件 SAS數據視圖SAS數據文件同時描述信息和存儲數據值。SAS數據視圖并不實際存儲數據,而只是一個查詢語句。class是數據視圖class1是數據文件變量觀測SAS數據集組成部分包括: 描述信息; 數據值。數據文件SAS數據文件是包含描述信息和數據值的SAS數據集。一般來說,SAS數據文件又分為: 普通的SAS數據文件:SAS格式的數據文件。 接口數據文件:以其它數據軟件格式儲存數據的數據文件。SAS提供對應的引擎來對這些文件中的數據進行讀取和編寫,如ORACLE DB2,SYBASE,ODBC,BMDP,SPSS和OSIRIS。雖然數據文件與視圖文件在應用時沒有任何區別

6、。但這兩者之間也有一定的差異。 前面已經提到二者最大的不同就是數據文件實際儲存數值,視圖只是包含表的描述信息以及一組用來讀取數據的查詢語句,并不實際存儲數據。 數據文件是靜態的,而視圖則是動態的。 SAS數據文件可以被索引,索引可以使SAS在搜索數據的時候變得更快。而SAS視圖不能被索引。 數據視圖 SAS數據視圖就是用來從其它文件中讀取數據的一種SAS文件。它只包括數據集的描述信息,如數據類型、變量長度等,再加上如何從其它文件中提取數據所要求的信息。 SAS視圖一般分為兩種: Native View, 由數據步或者SQL過程創建。 Interface View, 由SAS/ACCESS軟件創

7、建。Interface View可以讀寫其它數據庫管理系統(DBMS)中的數據庫,如DB2或 ORACLE數據庫等。數據視圖的使用優勢 可以使用連接多個表的視圖來合并數據集。 數據視圖可以節省大量的空間。 數據視圖可以保證讀取的數據集永遠都是最新的。 更改一個數據視圖只需要改變這個視圖的查詢語句。 使用SAS/CONNET軟件,視圖可以將多個不同主機電腦上的數據文件整合,以整體的形式呈現。數據步視圖數據步視圖包含用于從多個數據源中讀取數據的數據步程序,這些數據源包括: 原始數據文件; SAS數據文件; PROC SQL視圖; SAS/ACCESS 視圖; DB2,ORACLE,或者其它DBMS

8、數據。語法格式:Data 數據集名稱/ view=數據集名稱; SAS語句.;Run;例2.3 創建數據步視圖。Data Resdat.class1/view=Resdat.class1;set Resdat.class;run;1 data Resdat.class1/view=Resdat.class1;2 Resdat.class1;3 run;NOTE: DATA STEP 視圖已保存在文件 Resdat.class1 中。NOTE: 存儲的 DATA STEP 視圖無法在不同的操作系統下運行。日志中信息PROC SQL視圖PROC SQL視圖為一個帶有名稱的PROC SQL查詢。它可

9、以讀寫的數據源同數據步視圖。proc sql;create view resdat.e as select * from resdat.class;quit;日志中信息:4 proc sql;5 create view resdat.e as select * from resdat.class;NOTE: SQL 視圖 resdat.E 已定義。6 quit;存儲編譯的DATA步程序語句格式 DATA data-set-name(s) / PGM=stored-program-name ();data-set-name數據集名稱stored-program-name存儲編譯的DATA步程序名

10、稱password-option給DATA步程序名稱分配一個密碼source-option 存儲或編譯源碼 語法說明目錄冊文件SAS目錄冊文件是特殊的SAS文件,用來存放多種不同種類的信息文件。這些信息文件都很小,每個信息文件都被稱為一個條目(entry), 條目有多種不同的類型。一些目錄條件包含一些系統信息如功能鍵定義信息。SAS語言元素 數據集選項數據集選項用在SAS數據集名稱后的括號中,多個選項之間用空格隔開。括號中的數據集選項可以對數據集進行如下操作: 重新命名變量; 選擇需要的觀測; 輸出數據集中保留或刪除的變量; 數據集加密。語句格式:Data-set-name(Data-set-

11、options)(option-1=value-1)例2.4 數據集選項舉例。(非完整程序)data scores(keep=team game1 game2 game3);/*scores中只保留team,game1game2 game3這4個變量)proc print data=new(drop=year); /*去掉變量year*/set old(rename=(date=Start_Date);/* 將date改名*/輸入和輸出格式 輸出格式format是SAS用來確定如何輸出或寫出數據值的指令,用FORMAT控制數據值在輸出時所使用的格式。輸入格式informat是SAS用來確定如何

12、將數據讀入變量的指令。如果在輸入或輸出數據集的過程中沒有設定變量的輸入和輸出格式,系統會自動使用原數據集中的這個變量原有的輸入輸出格式。語句格式:format. informat. 格式說明:$指定為字符格式,如果該項空缺,則默認是數值格式format規定有效SAS輸出格式Informat規定有效SAS輸入格式w設定輸入輸出的長度,一般來說是數據所占的列的數目d設定數值數據中小數點的位數函數和CALL子程序 SAS函數對數據參數進行計算處理并返回一個值。大多數函數所使用的參數是由用戶提供的,一小部分函數使用系統提供的參數。 CALL子程序用來改變變量值,或執行一些系統功能。CALL子程序類似于

13、函數,但是不能在賦值語句中使用,所有的SAS CALL子程序都只能被CALL語句使用。 語句SAS語句就是一系列關鍵詞、SAS名稱、算符以及特殊字符的組合。所有的SAS語句以分號結尾。SAS語句一般分為數據步語句與過程步語句,以及可以用在SAS程序任何地方的全局通用語句。KEYWORD parameteroptions;關鍵詞 參數 選項;其中:粗體-必須按顯示形式書寫的關鍵詞;白正體-用戶提供的信息;-括號內的信息可選;|-任選。參數PARAMETER不是任選項,不用括號,OPTIONS是選項關鍵詞。例2.5 有效的SAS語句。(非完整程序)data data1; /* data為關鍵詞,d

14、ata1為SAS名 */data _null_; /* _null_為SAS名 */put name $ 8.; /* put為關鍵詞,name為SAS名,$8.為輸出格式*/format date yymmdd10.;proc means data=ResDat.class; /* proc為關鍵詞,means為過程名 */SAS系統選項 系統選項用來控制SAS的運行方式,如SAS系統啟動,硬件軟件的連接,SAS程序的運行等。 語句格式:OPTIONS option(s); option 設定一個或多個系統選項,任何系統選項都有一個默認設置。例2.6 設定選項OPTIONS obs=5;/*

15、取數據集前五個觀測*/Data one;Set ResDat.class;Run;表達式 表達式由一系列操作符和操作對象構成,產生一個目標值。使用表達式可以對變量作變換和賦值,創建新變量,計算新數值以及控制條件語句的運行等。操作對象有: 變量; 常數。操作符包括: 算術算符; 比較算符; 邏輯算符; SAS函數; 括號。SAS常數 SAS常數是SAS系統可以識別的一些固定值。數值常數 例2.7 數值常數。1, 5, 1.23, 1.2E23, 2E4 , 20000數值常數可以有多種格式展示。標準格式:1,01,+1,-1,1.1;科學計數法:1.1e11, 1.2e-12;十六進制格式:1c

16、x,12x,9x字符常數 例2.8 引用帶引號的字符常數。name=TOM”S;name=”TOMS”; /*例中,兩語句等價。*/要注意的是,字符常數是由引號括起來的,但是字符變量的名稱則沒有引號,也就是說字符常數不能作為字符變量的名稱。日期時間常數 例2.9 引用日期時間常數。1jan2000d; 01jan00d;9:25t; 18jan00:9:27:25dtif begin=01JAN2000d then end=31DEC2000d; SAS算符SAS算符是一些符號,其作用是進行計算、比較等。算術算符 例2.10 算術算符應用。data;X=3.5*2.5; put X=;Y=9+

17、1/3;put Y=;X=.;Y=1+X;put Y=; /*Y也是缺失值*/run;輸出結果:X=22.917651494Y=9.3333333333Y=.比較算符 例2.11 比較算符應用。if xy then c5;else c12;比較算符經常出現在IF語句里。比較準則: 數值和字符都可以比; 結果為真賦值1,假賦值0; 字符值從左到右逐個按ASCII碼排列序列進行比較; 缺失值參加比較時,它比任何有效值都小。邏輯算符 算符等價形式含義AND與| OR或 NOT非其它算符 :連接字符算符“|”例2.12 連接多個變量和常數。data;set ResDat.lstkinfo;result

18、=%a(|stkcd|,|lstknm|); put result;run;SAS變量 SAS變量分為數值變量和字符變量。數值變量數值變量是SAS系統以浮點(floating-point)方式存儲的數據變量,數值變量包括日期和時間。數值變量的值只能是數值。 字符變量字符變量可以由阿拉伯字母、數字0-9以及其它一些特殊字符組成。字符變量的值可以是字符、字母、特殊字符和數值。字符變量名后跟一個美元號($)表示該變量是字符型而不是數值型。變量屬性 SAS變量的屬性包括:長度、輸人輸出格式和標簽。未設定屬性的變量在它們第一次出現時由系統給出。變量的長度是指存貯變量值的字節數。缺省長度為8個字節。變量的

19、輸人格式是指SAS系統讀人變量值的方式。變量的輸出格式是指SAS系統展現變量值的方式。變量的標簽是指變量名的描述性標識,它至多可用256個字符。創建變量 使用賦值語句 Data a; x=1; run;/*數據集a中有個變量x,值為1*/使用INPUT語句 Data b; Input x $; Datalines; Aaa ; Run;使用FORMAT 或 INFORMAT語句 Data b; Set b; Informat y $9.; Run;以類似的方式創建變量的還有LENGTH語句,ATTIRB語句。變量類型轉換 字符自動轉換為數值 例2.15 字符自動轉換為數值。data;X=1;

20、/*X為數值變量 */Y=10; /*Y為字符變量 */X=Y; /*將字符變量賦值給一個數值變量時,自動將字符變量Y轉換為數值變量 */ run;data;X=1; /*X為數值變量 */Y=10; /*Y為字符變量 */Z=X+Y; /*算術表達式中有字符變量時,自動將字符變量Y轉換為數值變量 */run;data;X=1; /*X為數值變量 */Y=10; /*Y為字符變量 */if XY ; /*字符與數值變量進行比較時,自動將字符變量Y轉換為數值變量 */run;data;Y=10; /*Y為字符變量 */Z=log(Y); /*需要數值變量的函數中引用字符變量時,自動將字符變量Y轉

21、換為數值變量 */run;函數INPUT將字符轉換為數值 INPUT函數的形式:INPUT(數據源, 輸入格式);其中:數據源為要轉換為數值的變量,常數或表達式。數據源既可以是數值型,也可以是字符型。輸入格式規定對數據源進行轉換的輸入格式。例2.16 轉換字符變量為數值變量。data a(keep=code);set ResDat.lstkinfo;code=input(stkcd, 6.);run;數據集Acode1245200011200012數值自動轉換為字符 例2.19 數值自動轉換為字符。data;X=10; /*X為字符變量 */Y=10; /*Y為數值變量 */X=Y; /*自動

22、將數值變量Y轉換為字符變量 */ run;日志信息:10 data;11 X=10; /*X為字符變量 */12 Y=10; /*Y為數值變量 */13 X=Y; /*自動將數值變量Y轉換為字符變量 */14 run;NOTE: 數字值已轉換為字符值,位置:(行:列)。 13:3NOTE: 數據集 WORK.DATA2 有 1 個觀測和 2 個變量。NOTE: “DATA 語句”所用時間(總處理時間): 實際時間 0.03 秒 CPU 時間 0.00 秒data;Y=10; /*Y為數值變量 */Z=ROOM|Y; /*自動將數值變量Y轉換為字符變量 */ put Z=;run;data ;Y

23、=10600001; /*Y為數值變量 */Z=SUBSTR(Y,7,6);/*自動將數值變量Y轉換為字符變量 */put Z=;run;Z=ROOM 10Z=600001系統自動地將數值轉換為字符時,使用BEST12.的輸出格式,字符值右對齊。函數PUT將數值轉換為字符 PUT函數的形式:PUT(數據源, 輸出格式);其中:數據源為要轉換為字符值的變量,常數或表達式。數據源既可以是數值型,也可以是字符型。輸出格式規定對數據源進行轉換的輸出格式。例2.20 轉換數值變量為字符變量。data a (keep=date x);set ResDat.stk000001;x=put(clpr, 8.2

24、);run;自動變量 自動變量是由數據步語句自動創建的。這些自動變量被加入到程序數據向量(PDV)中,但是并不輸出到數據集中。自動變量在重復過程中被保留,而不是被設定為缺失。例:使用自動變量_Numeric_。data one;set sashelp.class;keep _numeric_; /* 只保留數據集中的數值變量*/run;錯誤類型與處理 SAS系統能夠檢查出錯誤類型有:句法錯;詞義錯;運行錯;數據錯;與宏有關的錯。SAS系統提交含有錯誤的程序后,LOG窗口會顯示的信息有:出錯的詞;錯誤的可能位置;對錯誤的說明。句法錯 例2.22 關鍵詞拼寫錯。daat a; /*將data錯拼為

25、daat */x=2;run;日志窗口信息:4 daat a; /*將data錯拼為daat */ - 14WARNING 14-169: 假定符號 DATA 錯拼為 daat。5 x=2;6 run;NOTE: 數據集 WORK.A 有 1 個觀測和 1 個變量。NOTE: “DATA 語句”所用時間(總處理時間): 實際時間 0.06 秒 CPU 時間 0.04 秒 例2.23 遺漏分號。data ainputx y;z=x+y;list;cards;1 23 45 6;run;詞義錯 例2.26 變量名拼寫錯。proc print data=ResDat.Idx000001 (obs=10);var data clpr; /* 將變量名Date拼成Data */run;日志窗口信息:7 proc print data=ResDat.Idx000001 (obs=10);NOTE: 正在寫入 HTML Body(主體)文件: sashtml.htm8 var data clpr; /* 將變量名Date拼成Data */ERROR: 變量 DATA 沒有找到。9 run;NOTE: SAS 系統由于錯誤而停止了該步的處理。NOTE: “PROCEDURE PRINT”所用時間(總處理時間): 實際時間 0.71 秒 CPU 時間 0.20 秒運行錯 例2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論