SAS語言入門教程
阿新 • • 發佈:2018-12-08
1.什麼是SAS
SAS語言是一種專用的資料管理與分析語言,它提供了一種完善的程式語言。
類似於計算機的高階語言,SAS使用者只需要熟悉其命令、語句及簡單的語法規則就可以做資料管
理和分析處理工作。因此,掌握SAS程式設計技術是學習SAS的關鍵環節。
在SAS中,把大部分常用的複雜資料計算的演算法作為標準過程呼叫,使用者僅需要指出過程名
及其必要的引數。這一特點使得SAS程式設計十分簡單。
中文名 統計分析系統 外文名 SAS 全稱 Statistics Analysis System
2.語言簡介
1.SAS語句: 1.SAS語言程式由資料步和過程步組成。 1.資料步用來生成資料集、計算、整理資料, 2.過程步用來對資料進行分析、報告。 2.SAS語言的基本單位是語句, 1.每個SAS語句一般由一個關鍵字(如DATA,PROC,INPUT,CARDS,BY)開頭, 包含SAS名字、特殊字元、運算子等,以分號結束。 2.SAS關鍵字是用於SAS語句開頭的特殊單詞,SAS語句除了賦值、累加、註釋、空語 句以外都以關鍵字開頭。 3.SAS名字在SAS程式中標識各種SAS成分,如變數、資料集、資料庫,等等。 4.SAS 名字由1到8個字母、數字、下劃線組成,第一個字元必須是字母或下劃線。 5.SAS關鍵字和SAS 名字都不分大小寫。 2.SAS表示式 1.SAS資料步程式中的計算用表示式完成。 表示式把常量、變數、函式呼叫運算子、括號連線起來得到一個計算結果。 1.常 量 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中用一個單獨的小數點來表示缺失值常量。 2.變 量 1.SAS變數的基本型別有兩種:數值型和字元型。 2.日期、時間等變數存為數值型(實際記錄為距1960/01/01的天數)。 3.SAS的數值型變數可以儲存任意整數、定點實數、浮點實數,一般不關心其區別。 數值型變數在資料集中的存貯一般使用8個位元組。SAS的字元型變數預設的長度 是8個字元,但是如果在INPUT 語句中輸入字元型變數時指定了長度則不受此 限制。可以用LENGTH語句直接指定變數長度。 LENGTH 語句一般應出現在變數定義之前,格式為: LENGTH 變數名 $ 長度;例如: LENGTH name $ 20; 3.運算子 SAS運算子包括算術、比較、邏輯及其它的運算子。 1.算術運算子 算術運算子: + - * / **,運算優先順序按通常的優先規則。 2.比較運算子: 比較運算子用於比較常量、變數的值大小、相等,包括 = ^= > < >= <= EQ NE GT LT GE LE IN 其中EQ等名字和=等特殊字元是同一運算子的等價寫法。比較運算子得 到“真”或“假” 的結果,主要用於需要條件的分支、迴圈等語句中。 運算子IN是一個SAS特有的比較運算子,用來檢查某個變數的取值是否 在一個給定列表中,例如: prov in ('Beijing', 'Tianjin', 'Shanghai', Chongqing') 可以判斷變數prov的取值是否為四個直轄市之一。 3.邏輯運算子 邏輯運算子用來連線比較得到的結果以構成複雜的條件,有三種邏輯運算 符: &(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之間 複雜的邏輯表示式最好用括號表示其運算優先順序,以免誤記優先規則並 可利於閱讀程式。 4.其它的運算子 其它的運算子: ||(兩個連續的|號),兩個字串連線 <> 取兩個運算值中較大一個的(比如3<>5結果為5) >< 取兩個運算值中較小一個的 (比如3><5結果為3) 注意:<>符在有些語言中用作“不等於”比較算符,而SAS 中用法則較特殊。
3.SAS程式規則
1.SAS程式由語句構成。每個語句以分號結尾。 2.在SAS程式中,一個語句可以寫到多行(不需任何續行標誌),也可以在一行連續寫幾個語句。 3.SAS語言中只要允許用一個空格的地方就可以加入任意多個空白(空格、製表符、回車),允 許用空格的地方是名字周圍、運算子周圍。 4.SAS關鍵字和名字大小寫不分,但字元型資料值要區分大小寫,比如"Beijing" 和"BEIJING" 被認為是不同的資料值。 5.在SAS程式中可以加入註釋,註釋的內容用/*和*/在兩端界定。這種註釋可以出現在任何允許 加入空格的位置,可以佔多行。 6.SAS中一般只把註釋單獨佔一行或若干行,不把註釋與程式程式碼放在同一行。註釋的另一個作 用是把某些程式碼暫時遮蔽使其不能執行。 7.SAS程式包括資料步和過程步兩種結構,每一個步是一段相對完整的可以單獨執行的程式。 資料步用來生成、整理資料和自程式設計計算,過程步呼叫SAS已編好的處理過程對資料進行處理。 自己用SAS程式設計序進行計算主要在資料步中進行。 8.SAS資料步以DATA語句開頭,以RUN語句結尾。DATA步中可以使用INPUT、CARDS、INFILE 、 SET、MERGE等語句指定資料來源輸入資料,也可以用賦值、分支、迴圈等程式設計結構直接生成 資料或對輸入的資料進行修改。 9.作用編輯 SAS是一種專用的資料處理、統計計算語言,但是它也包含一般的高階語言程式設計能力並擴充 了許多數學、統計等方面的函式。 SAS語言的程式設計計算能力主要由SAS資料步提供。DATA語句以關鍵字DATA 開頭,後面給出 一個數據集名,例如: data out1; 則在本資料步要生成的資料集,其名字為out1。我們也可以省略資料集名,這時SAS自動生 成一個臨時資料集名。也可以使用特殊名字_NULL_ ,表示本資料步不生成資料集。
4.一賦值語句
在SAS中用賦值語句計算一個值並存放到變數中。
格式為:變數名 = 表示式;
例如:
avg = (math + chinese)/2;
isfem = (sex='女');
y=sin(x)**2;
newv = .;
其中第一個賦值語句用一個公式計算平均分數。第二個生成一個取值為0或1的變數,
性別為女時為1,否則為0。第三個使用了正弦函式和乘方運算。第四個給變數賦了缺失值。
5.二輸出語句
1.SAS資料步的輸出一般是資料集,用賦值語句計算的結果會自動寫入資料集。SAS也提供了一個PUT語句用於立即列印輸出結果。 PUT語句的語法: PUT 輸出項表 輸出項表中只能是變數或字串,項間用空格隔開。 如: data; x=0.5; y=sin(x); put 'Sine function value of ' x 'is ' y; run; 結果將在執行記錄視窗顯示一行 Sine function value of 0.5 is 0.4794255386 2.PUT說明 ⒈在PUT語句中,若在變數名後加“=”,則指定輸出項可以顯示帶有變數名的輸出結果。 比如把上程式中的PUT語句改為 put x= y=; 則結果在LOG視窗顯示為 X=0.5 Y=0.4794255386 ⒉指定變數輸出項的具體列位置及小數位數 絕對位置格式: 變數 起始列-結束列.小數位數 比如: put x 10-20 .6 y 30-40 .6; 指定把X數值顯示在第10-20列,保留6位小數,把Y數值顯示在第30-40列,保留6位 小數。 在指定的列位置內,數值型資料靠右對齊,字元型資料靠左對齊。變數為整數值或者字元 型則不指定小數位數。 相對位置格式: 變數 寬度.小數位數(用於數值型) 變數 $寬度.(用於字元型) 如:put x 20.8 y 20.8; 使X佔用第1-20列,8位小數,右對齊;Y佔用第21-40列, 8位小數,右對齊。 而put name $10.;使name佔用10列。 輸出佔位不滿指定寬度時,數值型資料向右對齊,字元型資料向左對齊。 3.如果希望PUT語句的輸出不產生換行,使下一個PUT的結果可以顯示在同一行,只要在 PUT 語句結尾處加一個@符。 PUT語句的輸出結果預設情況下被送到執行記錄視窗。若在PUT語句之前用FILE語句可以 改變PUT語句的輸出目的地。如,在PUT語句之前用file print;可以把PUT語句的輸出 轉向到輸出視窗。在FILE語句中指定一個包含檔名的字串可以把PUT語句的輸出轉向 到此檔案中。比如file 'tmp.out';輸出檔案把後續的PUT語句輸出轉向 到當前工作目錄下的檔案“tmp.out”中,生成tmp.out 。注意當前工作目錄在SAS狀態 欄的右方顯示,雙擊可以更改。檔名也可以指定全路徑,比如“C:\SAS\TMP.OUT”。
6.三分支結構
⒈if...then...else 結構
⒉SELECT結構
1. if...then...else 結構
格式為:
IF 條件 THEN 語句;
ELSE 語句;
例: data temp1
input x @@;
if x>0 then put x '是正數';
else put x '是負數';
cards;
1 2 -3 4 -5
;
run;
有時我們在條件成立時需要進行的操作無法用一個語句完成,這時可以使用SAS提供的複合語句功能。例:
ut [email protected]@; /*不分行符@@的使用:每讀入一天記錄後,資料指標保持原位不換行,
繼續讀下一條記錄*/
if x>0 then do;
y=2*x;
put 'f(' x ')=' y;
end;
else put 'Data Error!';
cards;
1 2 -3 4 -5
;
run;