版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第2章 SAS編程基礎,清華大學經(jīng)管學院 朱世武 Z Resdat樣本數(shù)據(jù): SAS論壇: ,SAS語言組件,SAS 文件,由SAS創(chuàng)建、儲存、管理的文件就是SAS文件。所有的SAS文件都保存在SAS邏輯庫中。 最常用的SAS文件: SAS數(shù)據(jù)集 SAS目錄冊,SAS外部文件,SAS不能直接識別的數(shù)據(jù)文件稱為外部文件。外部文件一般用于儲存數(shù)據(jù)。 外部文件一般用來儲存: 要讀入SAS數(shù)據(jù)文件的原始數(shù)據(jù) SAS程序語句 過程步輸出,DBMS文件 SAS軟件可以和其它數(shù)據(jù)庫產(chǎn)品進行數(shù)據(jù)文件轉換。,SAS語言元素 SAS語言由語句、表達式、選項、格式、以及和其它編程語言名稱類似的函數(shù)組成。 SAS有兩
2、種語句 數(shù)據(jù)步 過程步,SAS文件系統(tǒng),SAS邏輯庫由一組SAS文件組成。SAS軟件系統(tǒng)的信息組織有兩層,第一層是SAS邏輯庫,第二層是SAS文件。 SAS邏輯庫是一個邏輯概念,本身不是物理實體,它對應的實體是操作系統(tǒng)下一個文件夾或幾個文件夾中的一組SAS文件。,邏輯庫,邏輯庫名與引用SAS文件,邏輯庫名是SAS名,長度不能超過8個字節(jié)。如SAS邏輯庫:ResDat, SASHELP, SASUSER, WORK等。 建立SAS邏輯庫的方法: 用菜單操作; 用LIBNAME語句。 語句格式: LIBNAME libref SAS-data-library 語法說明: Libref 邏輯庫名 S
3、AS-data-library 邏輯庫對應的物理地址 Engine 引擎名稱(缺失時為默認引擎),例2.1 用LIBNAME語句創(chuàng)建SAS邏輯庫。 Libname ResDat d:ResDat; 多個個文件夾創(chuàng)建一個SAS邏輯庫: Libname a (d:resbd,d:resfin); 例2.2 引用非臨時庫的SAS文件時必須使用兩級命名方式,而引用臨時庫的SAS文件時,可以直接使用文件名,效果等同于work.文件名。 data=ResDat.Idx000001;,臨時庫和永久庫 臨時邏輯庫是指它的內容只在啟動SAS時存在,退出SAS時內容完全被刪除。系統(tǒng)缺省的臨時邏輯庫為WORK. 永
4、久邏輯庫是指它的內容在SAS關閉對話之后仍舊保留,直到再次修改或者刪除。SAS系統(tǒng)中除了WORK以外的邏輯庫都是永久庫。,庫引擎 庫引擎是一組規(guī)定格式向邏輯庫讀寫文件的內部指令。利用庫引擎SAS系統(tǒng)可以直接訪問其它SAS版本創(chuàng)建的SAS文件和外部數(shù)據(jù)庫格式的數(shù)據(jù)文件。 每個SAS邏輯庫都對應一個庫引擎。 庫引擎功能包括: 讀取和寫入數(shù)據(jù); 列出庫中的文件; 刪除和重命名文件。,SAS通過不同庫引擎讀寫不同格式的文件。每個SAS引擎都有著自身的運行特性。比如 運行由舊版本SAS軟件生成的文件; 讀取由其它軟件生成的數(shù)據(jù)庫文件; 存儲和訪問硬盤或者tape上的文件; 決定文件中的變量和觀測如何放置
5、; 將文件從物理位置地址讀取放入到內存; 在不同的操作系統(tǒng)之間傳輸SAS文件。,數(shù)據(jù)集,SAS數(shù)據(jù)集有兩類: SAS數(shù)據(jù)文件 SAS數(shù)據(jù)視圖,SAS數(shù)據(jù)文件同時描述信息和存儲數(shù)據(jù)值。 SAS數(shù)據(jù)視圖并不實際存儲數(shù)據(jù),而只是一個查詢語句。,class是數(shù)據(jù)視圖 class1是數(shù)據(jù)文件,SAS數(shù)據(jù)集組成部分包括: 描述信息; 數(shù)據(jù)值。,數(shù)據(jù)文件 SAS數(shù)據(jù)文件是包含描述信息和數(shù)據(jù)值的SAS數(shù)據(jù)集。 一般來說,SAS數(shù)據(jù)文件又分為: 普通的SAS數(shù)據(jù)文件:SAS格式的數(shù)據(jù)文件。 接口數(shù)據(jù)文件:以其它數(shù)據(jù)軟件格式儲存數(shù)據(jù)的數(shù)據(jù)文件。SAS提供對應的引擎來對這些文件中的數(shù)據(jù)進行讀取和編寫,如ORACLE
6、 DB2,SYBASE,ODBC,BMDP,SPSS和OSIRIS。,雖然數(shù)據(jù)文件與視圖文件在應用時沒有任何區(qū)別。但這兩者之間也有一定的差異。 前面已經(jīng)提到二者最大的不同就是數(shù)據(jù)文件實際儲存數(shù)值,視圖只是包含表的描述信息以及一組用來讀取數(shù)據(jù)的查詢語句,并不實際存儲數(shù)據(jù)。 數(shù)據(jù)文件是靜態(tài)的,而視圖則是動態(tài)的。 SAS數(shù)據(jù)文件可以被索引,索引可以使SAS在搜索數(shù)據(jù)的時候變得更快。而SAS視圖不能被索引。 ,數(shù)據(jù)視圖,SAS數(shù)據(jù)視圖就是用來從其它文件中讀取數(shù)據(jù)的一種SAS文件。它只包括數(shù)據(jù)集的描述信息,如數(shù)據(jù)類型、變量長度等,再加上如何從其它文件中提取數(shù)據(jù)所要求的信息。,SAS視圖一般分為兩種: N
7、ative View, 由數(shù)據(jù)步或者SQL過程創(chuàng)建。 Interface View, 由SAS/ACCESS軟件創(chuàng)建。Interface View可以讀寫其它數(shù)據(jù)庫管理系統(tǒng)(DBMS)中的數(shù)據(jù)庫,如DB2或 ORACLE數(shù)據(jù)庫等。,數(shù)據(jù)視圖的使用優(yōu)勢 可以使用連接多個表的視圖來合并數(shù)據(jù)集。 數(shù)據(jù)視圖可以節(jié)省大量的空間。 數(shù)據(jù)視圖可以保證讀取的數(shù)據(jù)集永遠都是最新的。 更改一個數(shù)據(jù)視圖只需要改變這個視圖的查詢語句。 使用SAS/CONNET軟件,視圖可以將多個不同主機電腦上的數(shù)據(jù)文件整合,以整體的形式呈現(xiàn)。,數(shù)據(jù)步視圖 數(shù)據(jù)步視圖包含用于從多個數(shù)據(jù)源中讀取數(shù)據(jù)的數(shù)據(jù)步程序,這些數(shù)據(jù)源包括: 原始數(shù)
8、據(jù)文件; SAS數(shù)據(jù)文件; PROC SQL視圖; SAS/ACCESS 視圖; DB2,ORACLE,或者其它DBMS數(shù)據(jù)。,語法格式: Data 數(shù)據(jù)集名稱/ view=數(shù)據(jù)集名稱; SAS語句.; Run;,例2.3 創(chuàng)建數(shù)據(jù)步視圖。 Data Resdat.class1/view=Resdat.class1; set Resdat.class; run;,日志中信息,PROC SQL視圖 PROC SQL視圖為一個帶有名稱的PROC SQL查詢。它可以讀寫的數(shù)據(jù)源同數(shù)據(jù)步視圖。 proc sql; create view resdat.e as select * from resdat
9、.class; quit; 日志中信息:,存儲編譯的DATA步程序,語句格式 DATA data-set-name(s) / PGM=stored-program-name );,語法說明,目錄冊文件 SAS目錄冊文件是特殊的SAS文件,用來存放多種不同種類的信息文件。這些信息文件都很小,每個信息文件都被稱為一個條目(entry), 條目有多種不同的類型。一些目錄條件包含一些系統(tǒng)信息如功能鍵定義信息。,SAS語言元素,數(shù)據(jù)集選項 數(shù)據(jù)集選項用在SAS數(shù)據(jù)集名稱后的括號中,多個選項之間用空格隔開。 括號中的數(shù)據(jù)集選項可以對數(shù)據(jù)集進行如下操作: 重新命名變量; 選擇需要的觀測; 輸出數(shù)據(jù)集中保留或
10、刪除的變量; 數(shù)據(jù)集加密。,語句格式: Data-set-name(Data-set-options) (option-1=value-1) 例2.4 數(shù)據(jù)集選項舉例。 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用來確定如何輸出或寫出數(shù)據(jù)值的指令,用F
11、ORMAT控制數(shù)據(jù)值在輸出時所使用的格式。 輸入格式informat是SAS用來確定如何將數(shù)據(jù)讀入變量的指令。 如果在輸入或輸出數(shù)據(jù)集的過程中沒有設定變量的輸入和輸出格式,系統(tǒng)會自動使用原數(shù)據(jù)集中的這個變量原有的輸入輸出格式。,語句格式: format. informat. 格式說明:,函數(shù)和CALL子程序,SAS函數(shù)對數(shù)據(jù)參數(shù)進行計算處理并返回一個值。大多數(shù)函數(shù)所使用的參數(shù)是由用戶提供的,一小部分函數(shù)使用系統(tǒng)提供的參數(shù)。 CALL子程序用來改變變量值,或執(zhí)行一些系統(tǒng)功能。CALL子程序類似于函數(shù),但是不能在賦值語句中使用,所有的SAS CALL子程序都只能被CALL語句使用。,語句 SAS語
12、句就是一系列關鍵詞、SAS名稱、算符以及特殊字符的組合。所有的SAS語句以分號結尾。 SAS語句一般分為數(shù)據(jù)步語句與過程步語句,以及可以用在SAS程序任何地方的全局通用語句。,KEYWORD parameteroptions; 關鍵詞 參數(shù) 選項; 其中: 粗體-必須按顯示形式書寫的關鍵詞; 白正體-用戶提供的信息; -括號內的信息可選; |-任選。 參數(shù)PARAMETER不是任選項,不用括號,OPTIONS是選項關鍵詞。,例2.5 有效的SAS語句。 data data1; /* data為關鍵詞,data1為SAS名 */ data _null_; /* _null_為SAS名 */ pu
13、t name $ 8.; /* put為關鍵詞,name為SAS名,$8.為輸出格式*/ format date yymmdd10.; proc means data=ResDat.class; /* proc為關鍵詞,means為過程名 */ infile “d:ResDatclass.txt”; do I=1 to 100; x=y+1; sumx+x; run;,SAS系統(tǒng)選項,系統(tǒng)選項用來控制SAS的運行方式,如SAS系統(tǒng)啟動,硬件軟件的連接,SAS程序的運行等。 語句格式: OPTIONS option(s); option 設定一個或多個系統(tǒng)選項,任何系統(tǒng)選項都有一個默認設置。,例
14、2.6 設定選項 OPTIONS obs=5;/*取數(shù)據(jù)集前五個觀測*/ Data one; Set ResDat.class; Run;,表達式,表達式由一系列操作符和操作對象構成,產(chǎn)生一個目標值。 使用表達式可以對變量作變換和賦值,創(chuàng)建新變量,計算新數(shù)值以及控制條件語句的運行等。 操作對象有: 變量; 常數(shù)。,操作符包括: 算術算符; 比較算符; 邏輯算符; SAS函數(shù); 括號。,SAS常數(shù),SAS常數(shù)是SAS系統(tǒng)可以識別的一些固定值。,數(shù)值常數(shù),例2.7 數(shù)值常數(shù)。 1, 5, 1.23, 1.2E23, 2E4 , 20000 數(shù)值常數(shù)可以有多種格式展示。 標準格式:1,01,+1,-
15、1,1.1; 科學計數(shù)法:1.1e11, 1.2e-12; 十六進制格式:1cx,12x,9x,字符常數(shù),例2.8 引用帶引號的字符常數(shù)。 name=TOM”S; name=”TOMS”; /*例中,兩語句等價。*/ 要注意的是,字符常數(shù)是由引號括起來的,但是字符變量的名稱則沒有引號,也就是說字符常數(shù)不能作為字符變量的名稱。,日期時間常數(shù),例2.9 引用日期時間常數(shù)。 1jan2000d; 01jan00d; 9:25t; 18jan00:9:27:25dt if begin=01JAN2000d then end=31DEC2000d;,SAS算符 SAS算符是一些符號,其作用是進行計算、比
16、較等。,算術算符,例2.10 算術算符應用。 data; X=3.5*2.5; put X=; Y=9+1/3; put Y=; X=.; Y=1+X; put Y=; /*Y也是缺失值*/ run;,輸出結果:,比較算符,例2.11 比較算符應用。 if xy then c5; else c12; 比較算符經(jīng)常出現(xiàn)在IF語句里。,比較準則: 數(shù)值和字符都可以比; 結果為真賦值1,假賦值0; 字符值從左到右逐個按ASCII碼排列序列進行比較; 缺失值參加比較時,它比任何有效值都小。,邏輯算符,其它算符 :連接字符算符“|”,例2.12 連接多個變量和常數(shù)。 data; set ResDat.l
17、stkinfo; result=%a(|stkcd|,|stknm|); put result; run;,SAS變量,SAS變量分為數(shù)值變量和字符變量。 數(shù)值變量 數(shù)值變量是SAS系統(tǒng)以浮點(floating-point)方式存儲的數(shù)據(jù)變量,數(shù)值變量包括日期和時間。 數(shù)值變量的值只能是數(shù)值。 字符變量 字符變量可以由阿拉伯字母、數(shù)字0-9以及其它一些特殊字符組成。 字符變量的值可以是字符、字母、特殊字符和數(shù)值。字符變量名后跟一個美元號($)表示該變量是字符型而不是數(shù)值型。,變量屬性,SAS變量的屬性包括:長度、輸人輸出格式和標簽。未設定屬性的變量在它們第一次出現(xiàn)時由系統(tǒng)給出。 變量的長度是指
18、存貯變量值的字節(jié)數(shù)。缺省長度為8個字節(jié)。 變量的輸人格式是指SAS系統(tǒng)讀人變量值的方式。 變量的輸出格式是指SAS系統(tǒng)展現(xiàn)變量值的方式。 變量的標簽是指變量名的描述性標識,它至多可用256個字符。,創(chuàng)建變量,使用賦值語句 Data a; x=1; run;/*數(shù)據(jù)集a中有個變量x,值為1*/ 使用INPUT語句 Data b; Input x $; Datalines; Aaa ; Run;,使用FORMAT 或 INFORMAT語句 Data b; Set b; Informat y $9.; Run; 以類似的方式創(chuàng)建變量的還有LENGTH語句,ATTIRB語句。,變量類型轉換,字符自動轉
19、換為數(shù)值,例2.15 字符自動轉換為數(shù)值。 data; X=1; /*X為數(shù)值變量 */ Y=10; /*Y為字符變量 */ X=Y; /*將字符變量賦值給一個數(shù)值變量時,自動將字符變量Y轉換為數(shù)值變量 */ run; data; X=1; /*X為數(shù)值變量 */ Y=10; /*Y為字符變量 */ Z=X+Y; /*算術表達式中有字符變量時,自動將字符變量Y轉換為數(shù)值變量 */ run;,data; X=1; /*X為數(shù)值變量 */ Y=10; /*Y為字符變量 */ if XY ; /*字符與數(shù)值變量進行比較時,自動將字符變量Y轉換為數(shù)值變量 */ run; data; Y=10; /*Y
20、為字符變量 */ Z=log(Y); /*需要數(shù)值變量的函數(shù)中引用字符變量時,自動將字符變量Y轉換為數(shù)值變量 */ run;,函數(shù)INPUT將字符轉換為數(shù)值,INPUT函數(shù)的形式: INPUT(數(shù)據(jù)源, 輸入格式); 其中: 數(shù)據(jù)源為要轉換為數(shù)值的變量,常數(shù)或表達式。數(shù)據(jù)源既可以是數(shù)值型,也可以是字符型。 輸入格式規(guī)定對數(shù)據(jù)源進行轉換的輸入格式。,例2.16 轉換字符變量為數(shù)值變量。 data a(keep=code); set ResDat.lstkinfo; code=input(stkcd, 6.); run;,數(shù)據(jù)集A code 1 2 4 5 200011 200012 ,數(shù)值自動轉
21、換為字符,例2.19 數(shù)值自動轉換為字符。 data; X=10; /*X為字符變量 */ Y=10; /*Y為數(shù)值變量 */ X=Y; /*自動將數(shù)值變量Y轉換為字符變量 */ run;,日志信息: 10 data; 11 X=10; /*X為字符變量 */ 12 Y=10; /*Y為數(shù)值變量 */ 13 X=Y; /*自動將數(shù)值變量Y轉換為字符變量 */ 14 run; NOTE: 數(shù)字值已轉換為字符值,位置:(行:列)。 13:3 NOTE: 數(shù)據(jù)集 WORK.DATA2 有 1 個觀測和 2 個變量。 NOTE: “DATA 語句”所用時間(總處理時間): 實際時間 0.03 秒 CP
22、U 時間 0.00 秒,data; Y=10; /*Y為數(shù)值變量 */ Z=ROOM|Y; /*自動將數(shù)值變量Y轉換為字符變量 */ put Z=; run; data ; Y=10600001; /*Y為數(shù)值變量 */ Z=SUBSTR(Y,7,6);/*自動將數(shù)值變量Y轉換為字符變量 */ put Z=; run;,Z=ROOM 10,Z=600001,系統(tǒng)自動地將數(shù)值轉換為字符時,使用BEST12.的輸出格式,字符值右對齊。,函數(shù)PUT將數(shù)值轉換為字符,PUT函數(shù)的形式: PUT(數(shù)據(jù)源, 輸出格式); 其中: 數(shù)據(jù)源為要轉換為字符值的變量,常數(shù)或表達式。數(shù)據(jù)源既可以是數(shù)值型,也可以是字
23、符型。 輸出格式規(guī)定對數(shù)據(jù)源進行轉換的輸出格式。,例2.20 轉換數(shù)值變量為字符變量。 data a (keep=date x); set ResDat.stk000001; x=put(clpr, 8.2); run;,自動變量,自動變量是由數(shù)據(jù)步語句自動創(chuàng)建的。這些自動變量被加入到程序數(shù)據(jù)向量(PDV)中,但是并不輸出到數(shù)據(jù)集中。自動變量在重復過程中被保留,而不是被設定為缺失。,例:使用自動變量_Numeric_。 data one; set sashelp.class; keep _numeric_; /* 只保留數(shù)據(jù)集中的數(shù)值變量*/ run;,錯誤類型與處理,SAS系統(tǒng)能夠檢查出錯誤類型有: 句法錯; 詞義錯; 運行錯; 數(shù)據(jù)錯; 與宏有關的錯。 SAS系統(tǒng)提交含有錯誤的程序后,LOG窗口會顯示的信息有: 出錯的詞; 錯誤的可能位置; 對錯誤的說明。,句法錯,例
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 妊高癥患者的電療應用
- 《GAT 797.3-2008公安基本裝備業(yè)務信息代碼 第3部分:公安基本裝備狀況代碼》專題研究報告
- 《GAT 694-2007公安機關公文二維條碼信息表示規(guī)范》專題研究報告
- 2026年大學大二(機械電子工程)機電一體化系統(tǒng)設計階段測試試題及答案
- 2026年深圳中考數(shù)學高分沖刺綜合試卷(附答案可下載)
- 2026年深圳中考生物核心考點密押試卷(附答案可下載)
- 間歇經(jīng)口鼻飼的喂養(yǎng)技巧
- 2026年深圳中考歷史馬克思主義的誕生與發(fā)展試卷(附答案可下載)
- 妊高癥患者心理護理策略
- 2026年人教版物理八年級上冊期中質量檢測卷(附答案解析)
- 商場員工消防安全培訓
- 反恐怖防范管理規(guī)范第2部分:醫(yī)療衛(wèi)生機構
- JCT 2126.1-2023 水泥制品工藝技術規(guī)程 第1部分:混凝土和鋼筋混凝土排水管 (正式版)
- 高中地理選擇性必修二知識點
- 航天禁(限)用工藝目錄(2021版)-發(fā)文稿(公開)
- 人教版小學數(shù)學一年級下冊全冊同步練習含答案
- 加油站防投毒應急處理預案
- 假釋前評估表(家屬)
- 閉合導線計算(自動計算表)附帶注釋及教程
- 網(wǎng)店運營中職PPT完整全套教學課件
- 北師大版八年級數(shù)學下冊課件【全冊】
評論
0/150
提交評論