啟動
用如下方法可以進入SAS系統(tǒng)的窗口運行環(huán)境:
在Win95或NT環(huán)境中,從開始菜單的程序文件夾中找到SAS系統(tǒng)文件夾,從中啟動SAS 系統(tǒng)。或者生成SAS.EXE的快捷方式(把SAS.EXE用鼠標右鍵拖到桌面),雙擊SAS.EXE啟動。
在Windows 3.xx環(huán)境中找到SAS系統(tǒng)程序組中的SAS圖標雙擊啟動。
SAS AWS(SAS應用工作空間)
啟動后,出現如圖 1的SAS運行界面,術語稱為“SAS工作空間(SAS Application WorkSpace )”。它象其它Windows應用程序一樣,在一個主窗口內,包含若干個子窗口,并有菜單條、工具欄、狀態(tài)欄等。
SAS有三個最重要的子窗口:程序窗口(PROGRAM EDITOR)、運行記錄窗口(LOG)、輸出窗口(OUTPUT)。
程序窗口的使用類似于Windows中的記事本程序,可以在其中編輯文本文件,主要是編輯SAS 程序。程序可以直接在窗口中鍵入,插入新行用回車,插入點光標(閃動的豎線)可以用光標鍵(上下左右箭頭、Home、End)移動或用鼠標單擊到某一處。按住Shift再按光標鍵可以加亮顯示一塊文本,然后用復制、剪切、粘貼命令(Edit菜單中的Cut、Copy、Paste,或工具欄圖標)可以復制或移動加亮顯示的文本。這些編輯操作具體請參考Windows的有關文檔。
運行記錄窗口記錄程序的運行情況,運行是成功還是出錯,運行所用時間,如果出錯,錯在什么地方。運行記錄窗口中以紅色顯示的是錯誤信息。
輸出窗口顯示SAS程序的文本型輸出(圖形輸出單獨有一個GRAPHICS窗口)。輸出分頁顯示。
要把光標移動到某一窗口,可以用主菜單中的Window菜單選擇要顯示的窗口。用功能鍵F5 可以切換到程序窗口,F6可以到運行記錄窗口,F7可以到輸出窗口。
SAS主窗口標題欄下是主菜單。SAS菜單是動態(tài)的,其內容隨上下文而不同,即光標在不同窗口其菜單也不同。其中,File(文件)菜單主要是有關SAS文件調入、保存及打印的功能。Edit (編輯)菜單用于窗口的編輯(如清空、復制、剪切、粘貼、查找、替換)。Locals(局部)菜單與當前正在進行的操作有關,如果你正在程序窗口中編輯程序,則Locals菜單有提交運行、調回修改等項,如果在運行記錄窗口或輸出窗口則Locals菜單項根本不出現。Globals 菜單內容比較復雜,它可以打開被關閉的程序窗口、運行記錄窗口、輸出窗口、圖形窗口,可以進入SAS提供的各個獨立模塊。主菜單下是一個命令條和工具欄菜單。命令條主要是用于與SAS較早版本的兼容性,可以在這里鍵入SAS的顯示管理命令。工具欄圖標提供了常見任務的快捷方式,比如保存、打印、幫助等等。鼠標光標在某一工具欄圖標上停留幾秒可以顯示一個說明。工具欄圖標的解釋如下:
Submit - 提交編輯窗口中的程序
New - 清空編輯窗口
Open - 打開文件到編輯窗口。用戶指定一個文件調入到編輯窗口內。這個文件從此與編輯窗口相關聯,以后的存盤操作將自動存入這個文件。
Save - 存盤,保存編輯窗口內容,注意如果此窗口已經與一個文件相聯系的話此功能將覆蓋文件的原有內容而不提示。
Print - 打印當前窗口內容
Print preview -打印預覽。
Cut - 剪切選定文本。
Copy - 復制選定文本。
Paste - 粘貼。注意這些操作是對Windows 剪貼板進行的,可以用來與其它Windows應用程序交換文本、數據等。剪切或復制到剪貼板的內容可以被其它應用程序粘貼,其它應用程序放到剪貼板的內容也可以粘貼到SAS的編輯窗口中。
Undo - 撤銷剛才的編輯操作。
DOS prompt - 臨時進入DOS。
Browse - 打開WWW瀏覽器并進入SAS公司的主頁 www.。
Directories - 進入Directory(目錄)窗口,可以瀏覽各SAS數據庫的內容,可以瀏覽數據庫中的數據集、SAS目錄的內容。
SAS/ASSIST - 啟動SAS的菜單驅動界面SAS/ASSIST 。
Help - 啟動Windows的幫助系統(tǒng)進入SAS 的幫助。
假設我們有一個班學生的數學成績和語文成績,數學滿分為100,語文滿分為120,希望計算學生的平均分數(按百分制)并按此排名,可以在程序窗口輸入此程序:
title '95級1班學生成績排名';
data c9501;
input name $ 1-10 sex $ math chinese;
avg = math*0.5 + chinese/120*100*0.5;
cards;
李明 男 92 98
張紅藝 女 89 106
王思明 男 86 90
張聰 男 98 109
劉潁 女 80 110
;
run;
proc print;run;
proc sort data=c9501;
by descending avg;
run;
proc print;run;
實際上,輸入這樣包含中文的程序最好辦法不是在SAS程序窗口直接輸入,因為SAS目前對中文輸入的處理還不夠完善,好的辦法是打開一個其它的編輯程序如Windows中的記事本(在Win95 中用開始菜單中的“程序 | 附件 | 記事本”啟動),在記事本中復制輸入的程序,然后到SAS 系統(tǒng)程序窗口中使用粘貼命令(用Edit菜單的Paste或工具欄上的粘貼圖標),把程序復制到SAS 中。也可以在記事本中把編好的程序存盤,然后在SAS程序窗口用File菜單的Open命令打開保存好的程序文件。
要運行此程序,只要用鼠標單擊工具欄的提交圖標
,或用Locals菜單的Submit命令。運行后,運行記錄窗口出現如下內容:
50 title '95級1班學生成績排名';
51 data c9501;
52 input name $ 1-10 sex $ math chinese;
53 avg = math*0.5 + chinese/120*100*0.5;
54 cards;
NOTE: The data set WORK.C9501 has 5 observations and 5 variables.
NOTE: The DATA statement used 0.11 seconds.
60 ;
61 run;
62 proc print;run;
NOTE: The PROCEDURE PRINT used 0.0 seconds.
63 proc sort data=c9501;
64 by descending avg;
65 run;
NOTE: The data set WORK.C9501 has 5 observations and 5 variables.
NOTE: The PROCEDURE SORT used 0.05 seconds.
66 proc print;run;
NOTE: The PROCEDURE PRINT used 0.0 seconds.
其中記錄了每段程序的運行情況、所用時間、生成數據保存情況。如果有錯誤還會用紅色指示錯誤。比如,最后的proc print后面的分號如果丟失,記錄窗口顯示如下錯誤:
67 proc printrun;
--------
181
ERROR 181-322: Procedure name misspelled.
錯誤說明為過程名錯拼,但實際上是丟了分號導致print和run連成了一個詞。在程序窗口用“Locals | Recall text”菜單或按F4功能鍵可以調回程序修改。正確運行后輸出窗口出現如下結果:
95級1班學生成績排名 3
OBS NAME SEX MATH CHINESE AVG
1 李明 男 92 98 86.8333
2 張紅藝 女 89 106 88.6667
3 王思明 男 86 90 80.5000
4 張聰 男 98 109 94.4167
5 劉潁 女 80 110 85.8333
95級1班學生成績排名 4
OBS NAME SEX MATH CHINESE AVG
1 張聰 男 98 109 94.4167
2 張紅藝 女 89 106 88.6667
3 李明 男 92 98 86.8333
4 劉潁 女 80 110 85.8333
5 王思明 男 86 90 80.5000
這里有兩頁輸出,第一頁是輸入數據后用PROC PRINT顯示的數據集,第二頁為按平均分排名后的結果。
從上面的例子程序可以看出SAS程序的一些特點。SAS程序由 語句組成,語句用分號結束。SAS程序中大小寫一般不區(qū)分(字符串中要區(qū)分大小寫)。SAS程序中的空格、空行一般可以任意放置,這樣我們可以安排適當的縮進格式使得源程序結構清楚易讀。SAS程序由兩種“步”構成,一種叫 數據步(data step),一種叫 過程步(proc step),分別以DATA語句和PROC語句開始。數據步和過程步由若干個語句組成,一般以RUN語句結束。
本節(jié)介紹一些SAS特有的概念,其中最重要的是數據集。
SAS數據集
SAS數據集(SAS Datasets)可以看作由若干行和若干列組成的表格,類似于一個矩陣,但各列可以取不同的類型值,比如整數值、浮點值、時間值、字符串、貨幣值等等。SAS 數據集存放在以特殊格式存放的二進制文件中,我們用一個SAS中的邏輯名來使用SAS數據集而不需關心它到底如何存儲在磁盤上。比如,1.1.3的例子生成了一個名為C9501的數據集,它的邏輯形式如下表:
|
NAME
|
SEX
|
MATH
|
CHINESE
|
AVG
|
|
李明
|
男
|
92
|
98
|
86.8333
|
|
張紅藝
|
女
|
89
|
106
|
88.6667
|
|
王思明
|
男
|
86
|
90
|
80.5000
|
|
張聰
|
男
|
98
|
109
|
94.4167
|
|
劉潁
|
女
|
80
|
110
|
85.8333
|
數據集的每一行叫做一個觀測(Observation),每列叫做一個變量(Variable)。SAS數據集等價于關系數據庫系統(tǒng)中的一個表,實際上一個SAS數據集有時也稱作一張表。在數據庫術語中一個觀測稱作一個記錄,一個變量稱作一個域。在C9501數據集中有5個觀測,分別代表5個學生的情況,而每個學生有5個數據,分別為姓名、性別、數學成績、語文成績、平均分,所以此數據集有5個變量。
從上面看出,數據集要有名字,變量要有名字,所以SAS中對 名字(數據集名、變量名、數據庫名,等等)有約定:SAS名字由英文字母、數字、下劃線組成,第一個字符必須是字母或下劃線,名字最多用8個字符,大寫字母和小寫字母不區(qū)分。比如,name,abc,aBC,x1,year12,_NULL_等是合法的名字,且abc和aBC是同一個名字,而class-1(不能有減號)、a bit(不能有空格)、serial#(不能有特殊字符)、Documents (超長)等不是合法的名字。
SAS數據庫
SAS數據集是各種特殊格式的 SAS文件中最重要的一種。另一種重要的SAS文件是 SAS目錄(Catalog),用來保存各種不能表示成行列結構表格形式的數據,比如系統(tǒng)設置、圖象、聲音等。多個SAS文件可以放在一起,稱為一個 SAS數據庫(Library)。數據庫有一個庫名(Libname),其命名遵循上述SAS名字命名原則。在MS DOS/Windows環(huán)境中,一個SAS數據庫實際是磁盤上的一個子目錄(特殊情況下一個數據庫可以由幾個子目錄組成)。為了把庫名和子目錄聯系起來,使用LIBNAME語句。比如,我們在C:\Y1995子目錄中保存了幾個SAS數據集,可以用如下語句把庫名MYLIB與子目錄C:\Y1995 聯系起來:
libname mylib "c:\y1995";
有三個預定義的SAS數據庫:WORK、SASUSER、SASHELP。其中,WORK數據庫叫做 臨時庫,存放在其中的SAS文件叫 臨時文件,這些臨時文件當退出SAS系統(tǒng)時會被自動刪除。SASUSER庫保存與用戶個人設置有關的文件,它是永久的,即退出SAS時文件不會被刪除。SASHELP庫保存與SAS幫助系統(tǒng)、例子有關的文件,是永久的。
從上面看出,SAS文件分為 臨時文件和 永久文件:臨時文件在退出SAS系統(tǒng)時自動被刪除,永久文件在退出SAS系統(tǒng)時不自動被刪除。所以,我們把作為中間結果使用的數據集或練習用的數據集作為臨時數據集保存,而需要以后再用的數據集則可以保存為永久數據集。臨時數據集和永久數據集的區(qū)別是:臨時數據集可以用 單水平名,即只有數據集名,比如C9501,而永久數據集名由兩部分組成,前一部分是它的庫名,后一部分才是數據集名,兩部分中間用小數點連接,比如放在MYLIB庫(即"C:\Y1995" 子目錄)中的數據集TEACH必須用MYLIB.TEACH表示。這樣指定的數據集名在生成時可以放到由庫名指定的子目錄中,在讀取時可以到指定的子目錄讀取,并且不會被自動刪除。
臨時數據集除用單水平名外 ,也可以用庫名為WORK的兩水平名,如WORK.C9501和C9501 是一樣的。
要生成永久數據集,只要在指定要生成的數據集名時使用兩水平名且?guī)烀延卸x,比如,要把上面的C9501數據集在生成時就放到"C:\Y1995"子目錄中,可以用如下語句:
libname mylib "c:\y1995";
data mylib.c9501;
……
proc sort data=mylib.c9501;
……
這個程序和1.1.3的例子相比只是增加了一個定義庫名的LIBNAME語句,然后在所有用到數據集名C9501的地方換成了兩水平名MYLIB.C9501。要注意生成的數據集是MYLIB.C9501后面在用到它的時候(在PROC SORT中)也必須使用兩水平名MYLIB.C9501而不能使用單水平名C9501 ,這兩個名字指向的不是同一個SAS文件。
為了顯示現有定義的數據庫,只要單擊工具欄的
圖標,如圖 2。
Libraries窗口顯示了現有定義的所有數據庫及其對應的子目錄,并在窗口下方顯示了選定的數據庫中的SAS文件列表。文件列表第一列是SAS文件名稱,第二列是其類型,DATA代表數據集。雙擊某一數據集名可以打開此數據集到一個數據顯示窗口查看。
介紹
SAS的使用方法一般是象1.1.3那樣輸入一個程序,運行,修改,最后在輸出窗口得到結果。隨著圖形界面、用戶友好等程序思想的發(fā)展,SAS也逐漸提供了一些不需要學習SAS編程就能進行數據管理、分析、報表、繪圖的功能,其中做得比較出色的一個是SAS/INSIGHT模塊。SAS/INSIGHT是在基本的SAS系統(tǒng)基礎上添加的一個模塊,提供了數據交互輸入、數據探索、分布研究、相關分析、各種圖形等功能。這里我們初步介紹SAS/INSIGHT的使用。
要啟動SAS/INSIGHT,選Globals | Analyze | Interactive data analysis菜單,首先出現圖 3那樣的選擇數據集的窗口:
這是SAS/INSIGHT必須先選擇一個要分析、觀察的數據集。如果要生成新數據集,按New按鈕,如果要打開已有數據集,按Open按鈕。圖 4是SAS/INSIGHT運行時的樣子。
數據窗口
SAS/INSIGHT提供了一個類似于電子表格的數據窗口來管理數據集。圖 5為顯示了數據集SASUSER.CLASS的數據窗口:
此數據集是一個班19個學生的一些情況,包括姓名、性別、年齡、身高、體重。我們看到,數據窗口標題行顯示了打開的數據集的名字,標題行下左上角有一個向右的小三角,這是數據窗口的菜單,見圖 6:
三角下方的19是觀測行數,右方的5 是變量個數。窗口內每行最左邊的方塊是觀測的繪圖標記,用于在圖形中標記觀測;然后是觀測序號;再往右是各變量的值。數據窗口中的各變量用作列標題,如圖 5中的NAME、SEX、AGE 、HEIGHT、WEIGHT就是數據集SASUSER.CLASS中的五個變量的名字。在每一個變量名的上面有兩個標簽,右邊一個代表變量的量測水平,分為區(qū)間變量(Int)和名義變量(Nom)。區(qū)間變量是取連續(xù)值的變量,只能為數值;名義變量是取離散值的變量,一般為字符型,也可以取數值。變量名上面左邊的標簽代表變量在分析中的缺省用途,比如NAME上面的Label表示此變量的值(學生姓名)在繪圖中用來標記觀測,SEX上面的Group表示此變量(性別)用來分組,等等。
數據窗口可以用來建立新數據集。在SAS/INSIGHT內用“File | New”菜單或在啟動INSIGHT 的窗口(圖 3)按“New”按鈕,將出現一個空的數據窗口。這時,可以直接向第一行輸入數據,比如要輸入 1.1.3 中的C9501數據集,就可以在第一行的前四列中分別輸入李明、男、92 、98,這時各列自動取變量名為A、B、C、D,而且量測水平自動定為前兩個字符型是名義變量(Nom),后兩個數值型是區(qū)間變量(Int)。為了修改變量名和變量的用途,從數據窗口的菜單(圖 6)選Define Variables,出現圖 7的定義變量窗口:
在這里可以修改變量名,給變量加標簽(Label),可以選擇變量的量測水平,可以規(guī)定變量的用途。變量的標簽是對變量的一個可以長達40個字符的描述,可以用于以后的輸出,可以用漢字。
定好變量名等屬性后就可以繼續(xù)輸入其它數據行,每輸入一行后回車,直至把全部數據輸完。為了使回車時光標從前一行尾部進到下一行第一格,可以從數據窗口菜單(圖 6)中選 “Data Options”,在彈出的對話框中(圖 9):
選擇回車的方向(Direction of Enter)為左下(Down and Left)。為了保存輸入的數據集,選“File | Save | Data”菜單,出現圖 8 那樣的輸入數據集的窗口:
可以選擇數據集放在哪一個數據庫,可以輸入一個數據集名,把這里的A改成c9501,按OK鈕就可以保存數據集。對于比較小的數據集(幾個、十幾個變量,幾十個觀測),用SAS/INSIGHT的數據窗口可以迅速而直觀地輸入。對于更大量的數據,一般從其它格式轉換而得。
在數據窗口中如果需要修改某一個值,只要直接用鼠標點到其單元格修改,然后把輸入光標離開其所在行就實現了修改。在單元格之間移動可以用鼠標單擊、制表鍵、回車、上下光標鍵等方法。要保存所作的修改還需要用“File | Save | Data”菜單。
當數據窗口中變量較多時,可以用滾動條滾動窗口內容來查看。如果某個變量比較重要,可以考慮把它放到第一列的位置,這只要先單擊該變量的名字選中它,然后在圖 6的菜單中選Move to First。要把某列移到最后,選中它后用Move to Last菜單。
選中一列只要單擊其變量名。如果要選中多個列,在選中一個后按住Ctrl鍵單擊其它的名字可以添加選中其它變量。選中一個變量后按住Shift單擊另一個變量名可以選中這兩個變量及它們之間的所有變量。選中的多個列也可以用Move to First和Move to Last移動。
要選中一個觀測(行),只要單擊其觀測號(行號)。選多個觀測可以用Ctrl單擊或Shift 單擊的方法。選中的觀測也可以用Move to First和Move to Last移動到最前或最后。
還可以選中某些列同時選中某些行。只要在后續(xù)的選中操作時用添加選中(Shift單擊或Ctrl 單擊)即可。用鼠標在數據窗口數值顯示部分拖出一個方框也可以選定一部分數值。
選定了列或者行以后,用“Edit | Delete”菜單可以刪除選定的列或行。
要取消所有選中,只要單擊某一單元格而不是行、列標題即可。
下面簡單介紹一下數據窗口菜單(圖 6)中各命令:
- Find Next 在選定了若干個觀測的情況下,把下一個被選定的觀測顯示在窗口第一行的位置。
- Move to First 把選定的行或列移到最前。
- Move to Last 把選定的行或列移到最后。
- Sort 在選定了一列的情況下,把數據集按此列從小到大排序;在選定了多列的情況下,按選定的變量次序按這些變量綜合排序,比如在SASUSER.CLASS窗口中先選定SEX 然后用Ctrl單擊附加選定HEIGHT,然后排序,這樣的結果是把數據集先按女、男生排序然后在女生內部和男生內部分別按身高從小到大排序。如果沒有選定任何列,則彈出一個菜單,詢問按哪些變量排序,比如說對SASUSER.CLASS數據,可以先點SEX,然后單擊Y按鈕,把性別加入了排序變量中,再選HEIGHT,單擊Y按鈕,把身高作為第二排序變量,再單擊排序變量中的HEIGHT,單擊Asc/Des按鈕(這是要求對身高值要由高到低排序),按OK后數據將按性別分組,然后女生、男生內部分別按身高由高到低排列。
- New Observations 用于快速添加若干個空數據行,彈出一個對話框要求輸入添加的觀測數,缺省是100個。添加的空行中字符型數據先填空值,數值型數據先填缺失值(用單獨的小數點代表)。
- New Variables 用于快速添加若干個新變量。
- Define Variables 設定變量的名字、標簽、量測水平、缺省分析用途等,見圖 7。可以在生成新數據集時定義變量,也可以對已有數據集的變量屬性進行修改。
- Fill Values 用于自動生成一個等差數列變量。先選定一個數值型變量,然后用此命令,將彈出一個對話框要求輸入起始值(Value)和增量(Increment),比如起始值填100 ,增量填50,則此變量的在各觀測中的值分別填入為100,150,200,…。
- Extract 這是一個很強的功能,它可以把選定的部分行、部分列或者部分行列取出到另一個窗口。比如,在SASUSER.CLASS中先選定所有女生的觀測,再用添加選擇(Shift 或Ctrl單擊)的辦法選定NAME和HEIGHT變量,然后用此命令,可以打開一個SASUSER.CLASS1 數據窗口,此數據窗口中只有姓名和身高兩列和女生的觀測行??梢杂弥鞑藛沃械摹癋ile | Save | Data ”把此新數據集保存為WORK.CLASS1(盡量不用永久數據集存放練習用的數據集)。這樣可以由已有數據集挑選部分列、部分行組成新數據集。
- Data Options 本數據窗口的一些設置。彈出對話框如圖 9,可以選擇在數據窗口內按回車時光標是移到下面、左面還是下面最左,按TAB是光標是移到下面、右面還是右上。選中“Show Variable Labels”可以用變量的標簽作為窗口的列標題,這樣有利于理解變量的意義,但無法知道變量的真實名字。前面說過,變量標簽允許長達40個字符,允許用漢字。標簽可以在數據窗口菜單的Define Variables窗口(圖 7)輸入或修改。如果要用較長的漢字標簽,需要適當地用空格分開標簽中的漢字以利于分行顯示標簽。