SAS系統強大的數據管理能力、計算能力、分析能力依賴於作為其基礎的SAS語言。SAS語言是壹個專用的數據管理與分析語言,它的數據管理功能類似於數據庫語言(如FoxPro),但又添加了壹般高級程序設計語言的許多成分(如分支、循環、數組),以及專用於數據管理、統計計算的函數。SAS系統的數據管理、報表、圖形、統計分析等功能都可以用SAS語言程序來調用,只要指定要完成的任務就可以由SAS系統按照預先設計好的程序去進行,所以SAS 語言和FoxPro等壹樣是壹種第四代語言。這裏簡單介紹SAS語言的基本成分與規則。 SAS數據步程序中的計算用表達式完成。表達式把常量、變量、函數調用用運算符、括號連接起來得到壹個計算結果。
常 量
SAS常量主要有數值型、字符型兩種,並且還提供了用於表達日期、時間的數據類型。
數值型:數值型常數可以用整數、定點實數、科學計數法實數表示。如:
12,-7.5,2.5E-10
字符型:字符型常數為兩邊用單撇號或兩邊用雙撇號包圍的若幹字符。如:
'Beijing',Li Ming,李明
日期、時間:
日期型常數是在表示日期的字符串後加壹個字母d大小寫均可),中間沒有空格。時間型常數是在表示時間的字符串後加壹個字母t。日期時間型常數在表示日期時間的字符串後加字母dt。
日期型:'13JUL1998'd
時間型:'14:20't
日期時間型:'13JUL1998:14:20:32'dt
因為SAS是壹種數據處理語言,而實際數據中經常會遇到缺失值,比如沒有觀測到數值,被訪問人不肯答,等等。SAS中用壹個單獨的小數點來表示缺失值常量。
變 量
SAS變量的基本類型有兩種:數值型和字符型。日期、時間等變量存為數值型(實際記錄為距1960/01/01的天數)。SAS的數值型變量可以存儲任意整數、定點實數、浮點實數,壹般不關心其區別。數值型變量在數據集中的存貯壹般使用8個字節。SAS的字符型變量缺省的長度是8個字符,但是如果在INPUT 語句中輸入字符型變量時指定了長度則不受此限制。可以用LENGTH語句直接指定變量長度。
LENGTH 語句壹般應出現在變量定義之前,格式為:
LENGTH 變量名 $ 長度;例如:
LENGTH name $ 20;
運算符
SAS運算符包括算術、比較、邏輯及其它的運算符。
算術運算符
算術運算符: + - * / **,運算優先級按通常的優先規則。
比較運算符
比較運算符用於比較常量、變量的值大小、相等,包括
= ^= > < >= <=
EQ NE GT LT GE LE IN
其中EQ等名字和=等特殊字符是同壹運算符的等價寫法。比較運算符得到“真”或“假” 的結果,主要用於需要條件的分支、循環等語句中。
運算符IN是壹個SAS特有的比較運算符,用來檢查某個變量的取值是否在壹個給定列表中,例如:
prov in ('Beijing', 'Tianjin', 'Shanghai', Chongqing')
可以判斷變量prov的取值是否為四個直轄市之壹。
邏輯運算符
邏輯運算符用來連接比較得到的結果以構成復雜的條件,有三種邏輯運算符: &(AND) |(OR) ^(NOT) 。其中AND是&(與)的等價寫法,OR是|(或)的等價寫法,NOT是^(非)的等價寫法。
例如:
(salary >= 1000) AND (salary < 2000)
表示工資收入在1000-2000之間(不含2000)
(age <= 3) OR (sex = '女')
表示三歲以下(含三歲)的嬰兒及婦女
NOT ((salary >= 1000) AND (salary < 2000))
表示工資收入不在1000-2000之間
復雜的邏輯表達式最好用括號表示其運算優先級,以免誤記優先規則並可利於閱讀程序。
其它的運算符
其它的運算符:
||(兩個連續的|號),兩個字符串連接
<> 取兩個運算值中較大壹個的(比如3<>5結果為5)
>< 取兩個運算值中較小壹個的 (比如3><5結果為3)
註意:<>符在有些語言中用作“不等於”比較算符,而SAS 中用法則較特殊。 SAS程序由語句構成。每個語句以分號結尾。在SAS程序中,壹個語句可以寫到多行(不需任何續行標誌),也可以在壹行連續寫幾個語句。SAS語言中只要允許用壹個空格的地方就可以加入任意多個空白(空格、制表符、回車),允許用空格的地方是名字周圍、運算符周圍。另外,SAS關鍵字和名字大小寫不分,但字符型數據值要區分大小寫,比如Beijing 和BEIJING被認為是不同的數據值。
在SAS程序中可以加入註釋,註釋的內容用/*和*/在兩端界定。這種註釋可以出現在任何允許加入空格的位置,可以占多行。SAS中壹般只把註釋單獨占壹行或若幹行,不把註釋與程序代碼放在同壹行。註釋的另壹個作用是把某些代碼暫時屏蔽使其不能運行。
SAS程序包括數據步和過程步兩種結構,每壹個步是壹段相對完整的可以單獨運行的程序。數據步用來生成、整理數據和自編程計算,過程步調用SAS已編好的處理過程對數據進行處理。自己用SAS編程序進行計算主要在數據步中進行。
SAS數據步以DATA語句開頭,以RUN語句結尾。DATA步中可以使用INPUT、CARDS、INFILE 、SET、MERGE等語句指定數據來源輸入數據,也可以用賦值、分支、循環等編程結構直接生成數據或對輸入的數據進行修改。