版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
現(xiàn)代統(tǒng)計分析與SAS入門學習目標1、了解SAS系統(tǒng)的功能特點;2、熟悉SAS系統(tǒng)的操作環(huán)境;3、掌握SAS系統(tǒng)的有關概念;4、學會使用DADAStep(數(shù)據(jù)步)建立數(shù)據(jù)集,能對現(xiàn)有數(shù)據(jù)集進行讀入、修改、拼接及合并;5、學會使用PROCStep(過程步)的幾個重要過程對數(shù)據(jù)集進行常規(guī)的統(tǒng)計分析和顯示;6、學會自己查看系統(tǒng)幫助;7、能夠利用SAS系統(tǒng)處理常見的研究數(shù)據(jù)。基本內容1、SAS概述;2、SAS顯示管理系統(tǒng);3、SAS編程基礎:SAS語句;SAS表達式;SAS常量;SAS變量;SAS算符;SAS函數(shù);4、DADAStep(數(shù)據(jù)步);5、PROCStep(過程步);6、常用統(tǒng)計分析模塊。4、SAS系統(tǒng)的特點SAS系統(tǒng)是用于數(shù)據(jù)分析與決策支持的大型集成式模塊化軟件包,是一種組合軟件系統(tǒng)。核心部分是BaseSAS軟件,其它可選模塊有:SAS/STAT軟件、SAS/GRAPH軟件、SAS/IML軟件、SAS/OR軟件、SAS/ETS軟件等30多個。1、操作簡便
SAS的宗旨是為所有需要進行數(shù)據(jù)處理、數(shù)據(jù)分析的非計算機專業(yè)人員提供一種易學易用、完整可靠的軟件系統(tǒng)。用戶把要解決的問題用SAS語言(近乎自然英語的非過程語言)表達出來,組成SAS程序,提交給SAS系統(tǒng)就可以解決所提出的問題。2、SAS系統(tǒng)將數(shù)據(jù)管理與統(tǒng)計分析溶為一體
SAS程序的結構由兩個基本步驟任意組合而成。DATA步用于對數(shù)據(jù)的加工處理;PROC步用于分析數(shù)據(jù)和編寫報告。SAS系統(tǒng)克服了通常軟件或偏重于數(shù)據(jù)管理功能或偏重于統(tǒng)計分析的弊病,把數(shù)據(jù)管理與統(tǒng)計分析有機地結合在一起。3、適用性強、應用面廣
SAS系統(tǒng)適用于任何經(jīng)驗的人員(初學者或有經(jīng)驗的用戶);適用于任何類型的數(shù)據(jù);適用于幾乎是任何應用的需要;適用于任何計算機環(huán)境;擴展性能強。5、SAS軟件的啟動:用如下方法可以進入SAS系統(tǒng)的窗口運行環(huán)境:菜單方式:依次點擊“開始”------->“程序”-------->“TheSASSystem”------>“TheSASSystemforWindowsv6.12”即可。
快捷方式:在Windows桌面系統(tǒng)下雙擊
SAS圖標;6、SAS工作界面在命令窗口輸入“keys”后情況命令行命令窗(條)7、SAS顯示管理系統(tǒng)SAS顯示管理窗口可分為兩大類:基本窗口和其它窗口?;敬翱冢ㄈ齻€):PROGRAMEDITOR窗口(程序編輯窗,縮寫為PGM);LOG窗口(登錄窗或日志窗);OUTPUT窗口(輸出窗);PGM窗口:輸入和編輯文本,包括SAS語句;提交SAS語句;拷貝一個外部文件到PGM窗口,或拷貝窗口內容到外部文件上;LOG窗口
LOG窗口包含SAS日志,它是當前SAS會話的記錄。一個典型的記錄顯示:在當前會話中發(fā)布的SAS語句;注釋、警告和出錯信(紅色---錯誤
蘭色---正常
綠色---警告)OUTPUT窗口:這個窗口也稱為LISTING窗口,它包含由大多數(shù)SAS過程產(chǎn)生的輸出。在SAS會話期間相繼產(chǎn)生的輸出都附加到OUTPUT窗口內容中。其它窗口:除了三個基本窗口以外,顯示管理包含很多其它窗口。各個窗口均可在任何一個窗口的命令行鍵入相應的命令來打開。下面按字母順序列出包括三個基本窗口在內的主要顯示管理窗口,并給出簡單描述。常用顯示管理窗口及調用命令8、顯示管理命令SAS顯示管理系統(tǒng)包括眾多的命令讓用戶完成各種任務。根據(jù)發(fā)布命令的位置可將其分為命令行命令和行命令。顯示管理命令按習慣是從命令行command===>輸入相應的命令發(fā)布的,因此稱這些命令為命令行命令;而一些文本編輯命令按習慣是從顯示的行號上發(fā)布的,因此這些命令稱為行命令(Windows環(huán)境下較少應用)。幾個重要的命令行命令:1)窗口切換命令:
PGM|F5:切換到PGM窗口
LOG|F6:切換到LOG窗口
OUTPUT|F7:切換到OUTPUT窗口2)編輯命令:
CLEAR|Ctr+E:清除當前工作窗口的所有信息
RECALL|F4:將運行過的程序調回到PGM窗口
SUBMIT|F8:將PGM窗中的所有程序提交運行
HOME:將光標移到命令行保存文件:
方法1
(命令法):
FILE命令:將當前工作窗口的內容寫到外部文件中。例如:FILE‘D:\My’回車后將信息寫到D盤根目錄下一個名為My的文件上。
方法2(菜單法):
“File”“SaveAs”,輸入文件名“Myfile”點“保存”即可。打開文件:方法1
(命令法):INCLUDE|INC:將指定的外部文件調入PGM窗。例如:INC‘D:\My’回車后將D盤根目錄下一個名為My的外部文件調入PGM窗。注1:該命令只能在PGM窗使用;如果PGM窗已有文本,則該命令將指定的外部文件調入窗口文本的后面。方法2(菜單法):“File”“Open…”,找到相應的文件,點“打開”即可。9、文件的保存與打開3、在D:盤根目錄下建立一個文件夾,取名為:SASEX2004。將上題(題2)修改好的程序、輸出結果及日志窗中的內容保存在前面建立的文件夾中。上機練習題(Cont.)第一章結束
SASwebsite:第二章SAS編程語言基礎
同其它計算機語言一樣,SAS語言也有它自己的語法:關鍵詞和連結關鍵詞與其它輔助信息的規(guī)則。用戶使用SAS語言來定義數(shù)據(jù)和規(guī)定對數(shù)據(jù)怎樣做統(tǒng)計分析的問題。由SAS語句組成的序列稱為SAS程序?!?、SAS語句一.SAS語句的含義我們先來看一個實例:DATA
score;INPUT
nox1x2x3x4$;CARDS;;RUN;
687165
良好20010874 746168
良好20010875 737546
良好20010876 798079
優(yōu)秀20010877 757168
良好20010884 858587
優(yōu)秀20010885 787975
優(yōu)秀20010886 807679
優(yōu)秀20010887 858082
良好20010888 777175
良好20010889 677371
優(yōu)秀20010890 758170
良好20011118 705475
及格20010893 706684
及格20010894 627365
及格20010909 827079
優(yōu)秀PROC PRINTData=
score;VAR
nox1x2x3x4;RUN;PROCMEANSData=
score;VAR
x2x3;RUN;
dataex1;
inputname$agesex;
cards;xiaomin191lidong201nana182;
procprintdata=ex1;
run;
procprintdata=ex1;
Varnameagesex;
run;第一章練習題在這個例子中,我們看到:DATA,INPUT,CARDS,PROC,VAR,RUN是關鍵詞;score是數(shù)據(jù)集名;no,x1,x2,x3,x4是變量名;MEANS是過程名;Data=是MEANS語句中的選項?,F(xiàn)在,我們給出SAS語句的定義:SAS語句是由關鍵詞、SAS名、特殊字符或運算符組成并以分號結尾的字符串。TheMEANSProcedureVariableNMeanStdDevMinimumMaximum------------------------------------------------------------------------------x21672.87500007.872949554.000000085.0000000x31673.00000009.791152546.000000087.0000000------------------------------------------------------------------------------二.幾個概念1.SAS關鍵詞位于句首的用以說明語句類型和功能的單詞稱為SAS語句的關鍵詞。它是SAS語句的主要成份。如:PROC、DATA、VAR、RUN等。2.SAS名
SAS語句中出現(xiàn)的SAS名有很多種類,如變量名、SAS數(shù)據(jù)集名等。SAS命名規(guī)則:
1)由1至8個字符組成;
2)由三種字符構成:英文字母A-Z,a-z,下劃線_,數(shù)字0-9;
3)每個名字的第一個字符不能為數(shù)字;
4)SAS系統(tǒng)保留了一些名字作為特殊的變量名,這些變量名的開頭和結尾都用特殊字符下劃線表示(如_N_、_ERROR_等)。例如:INPUT
xyz;其中:INPUT是關鍵詞,它說明要把數(shù)據(jù)提供給哪些變量。后面跟的變量名x、y、z
都是參數(shù),即要求用戶提供的信息?!硎緟?shù)可以不止一個。[選項1|選項2|選項3]中的豎線“|”用來分隔各選擇項,表示其中任選一個;方括號內的信息是可以選擇的。例如:PROCMEANS
data=storemaxdec=3;其中:PROC是語句的關鍵詞,它說明本語句是過程語句;MEANS是過程名,它說明要調用的過程名稱;data=、maxdec=都是選項的關鍵詞,等號后面是用戶提供的選擇信息。
一系列SAS語句組成一段SAS程序。SAS程序中的語句可分為兩類步驟:DATA步和PROC步。這兩類步驟是所有SAS程序的模塊。通常用DATA步產(chǎn)生SAS數(shù)據(jù)集而用PROC步對SAS數(shù)據(jù)集內的數(shù)據(jù)進行分析處理并輸出結果。一段SAS程序可由一個DATA步或一個PROC步組成;或者由DATA步和PROC步兩部分組成;也可由多個DATA步和多PROC步組成。§2、SAS程序PROC步要求SAS系統(tǒng)從過程庫中調出一個過程模塊并執(zhí)行它。PROC步以PROC語句開始,其后緊跟一個過程名(英文關鍵字);一個過程步可以包含多個相應的SAS語句。例如:PROCMEANSData=score;VAR
x2x3;PROCPRINTData=score;VAR
x1x3x4;注意:一個完整的SAS程序必須以RUN語句結尾方能提交運行。
2.PROC步(過程步)§3、編寫SAS程序DATA
score;INPUT
nox1x2x3x4$;CARDS;;RUN;
687165
良好20010874 746168
良好20010875 737546
良好20010876 798079
優(yōu)秀20010877 757168
良好20010884 858587
優(yōu)秀20010885 787975
優(yōu)秀20010886 807679
優(yōu)秀20010887 858082
良好20010888 777175
良好20010889 677371
優(yōu)秀20010890 758170
良好20011118 705475
及格20010893 706684
及格20010894 627365
及格20010909 827079
優(yōu)秀PROC PRINTData=
score;VAR
nox1x2x3x4;RUN;PROCMEANSData=
score;VAR
x1x2x3;RUN;以上一個DATA步和兩個PROC步就構成了一個SAS程序。上面SAS程序的輸出結果如下:TheSASSystem09:22Monday,August16,2004
10Obsnox1x2x3x4
1
68
71
65
良好
2
74
61
68
良好
3
73
75
46
良好
4
79
80
79
優(yōu)秀
5
75
71
68
良好
6
85
85
87
優(yōu)秀
7
78
79
75
優(yōu)秀
8
80
76
79
優(yōu)秀
9
85
80
82
良好
10
77
71
75
良好
11
67
73
71
優(yōu)秀
12
75
81
70
良好
13
70
54
75
及格
14
70
66
84
及格
15
62
73
65
及格
16
82
70
79
優(yōu)秀
TheMEANSProcedureVariableNMeanStdDevMinimumMaximum------------------------------------------------------------------------------x216
72.8750000
7.8729495
54.0000000
85.0000000x316
73.0000000
9.7911525
46.0000000
87.0000000------------------------------------------------------------------------------(1)書寫格式SAS語句可以從一行上的任意位置開始;幾個SAS語句可以寫在同一行上;一個語句也可以寫成幾行,只要語句中的單詞不被斷開即可;在一個語句中各項之間至少要有一個空格;一些特殊符號(如等號=,加號+)可以占據(jù)空格的位置,如:total=a+10;與total=a+10;是等價的;SAS語句用大寫字母、小寫字母或大、小寫混合書寫均可。(2)注釋
SAS語句中有一個注釋語句,形式為:
/*注釋內容*/凡是空格可以出現(xiàn)的地方,以上形式的注釋語句也能出現(xiàn)。例如:
PROCSORT/*對數(shù)據(jù)集排序*/;就是一個合法的語句。1.SAS程序的書寫方法(3)變量的縮寫變量在數(shù)據(jù)集中的實際位置按它們第一次出現(xiàn)的次序被定義。例如:前面的例子的INPUT語句中,no被定義為第一個變量,接著是x1,x2,x3,x4。在一些SAS語句中,需要對變量進行集中處理,SAS采用如下的方式來解決這個問題:形如x1,x2,x3...xn的帶序號的變量名,縮寫為x1-xn;形如x1,a,b,x2,x3,d的不帶序號的變量名,縮寫為x1--d;特殊的SAS變量,_numeric_表示所有數(shù)值變量;
_character_表示所有字符變量;
_all_表示所有變量。請看上面的數(shù)據(jù)集,這些變量在數(shù)據(jù)集中的位置是:nox1agex2x3x4x5下面以VAR語句為例說明SAS變量縮寫引用中-與--區(qū)別:VARx1-x5;表示只引用變量x1x2x3x4x5,與VAR
x1x2x3x4x5;語句等價。VARx1--x5;表示引用在位置上從x1到x5之間的所有變量x1agex2x3x4x5,與VAR
x1agex2x3x4x5;語句等價。程序的執(zhí)行當我們在PGM窗口將程序輸入完畢,檢查修改后就可以提交給SAS系統(tǒng)執(zhí)行。在LOG窗口顯示程序執(zhí)行中記錄的信息,它包括:執(zhí)行哪些語句;生成的數(shù)據(jù)集中變量個數(shù)及觀測個數(shù)是多少;程序執(zhí)行所消耗的時間及出錯信息等。SAS過程的輸出前例提交執(zhí)行以后,DATA步產(chǎn)生一個名為score的SAS數(shù)據(jù)集;后面的兩個PROC步產(chǎn)生的結果輸出到OUTPUT窗口(如前例的輸出)。2.SAS程序的的執(zhí)行與輸出§4SAS表達式
前面簡單介紹了SAS語句和SAS程序的構成。要靈活的完成日常的數(shù)據(jù)管理和統(tǒng)計分析工作,還得很好掌握SAS表達式。
SAS表達式是由一系列算符和運算對象形成的一個指令集,它被執(zhí)行后產(chǎn)生一個目標值。運算對象是SAS變量和SAS常數(shù);算符是特殊的運算符、函數(shù)和括號。表達式分為簡單表達式和復合表達式。下列式子都是表達式。X+13LOG(X)LOG10(X)P/A*100AGE<1001-EXP(N/(N-1))A=B=CSTATE=‘CA’
在DATA步中,為了對變量進行變換,建立新變量、條件處理、計算新值及指定新值,都需要使用SAS表達式。一.SAS常數(shù)
SAS常數(shù)用來表示固定的值,它或者是一個數(shù)字,或者是用引號引起來的字符串、或者是其它特殊記號。SAS使用的常數(shù)有五種類型:數(shù)值常量、字符常量、日期、時間和日期時間常量、十六進制數(shù)值常量、十六進制字符常量。我們主要介紹數(shù)值常量和字符常量。1.數(shù)值常量:一個數(shù)值常量就是出現(xiàn)在SAS語句里的數(shù)字。很多數(shù)值常量完全像通常的數(shù)據(jù)值一樣書寫。數(shù)值常量可以包括小數(shù)點,負號和E記號。例如:1-51.231.2E230.10.5E-10。用E表示法時,如2E4,它表示,或者20000。
SAS系統(tǒng)中,缺失值用小數(shù)點來(.)表示。2.字符常量:字符常量是由(單)引號括起來的1~200個字符組成的字符串.例如,在下面的語句中:
IFname=‘TOM’
THENDO;‘TOM’就是一個字符常量。如果字符常量含有引號,則用兩個連續(xù)的單引號來處理。例如,字符值為TOM’S時,輸入:
name=’TOM’’S’
缺失的字符常量值為空字符,表示為’’(兩個連續(xù)的單引號)。二SAS變量:描述給定特征的數(shù)值集合的指標稱為變量。SAS變量的特征:變量名、類型、存儲長度、標簽、輸入格式、輸出格式存儲長度指變量在存儲時所需要的字節(jié)數(shù)。默認情況下所有的變量都定義為8字節(jié)。字符變量的長度可為1-200字節(jié),數(shù)值變量的長度可為3-8字節(jié)。標簽是對變量的補充說明,可以為任意字符,長度可多達257個字符。SAS數(shù)據(jù)集(部分)ObservationsVariablesValue輸入輸出格式原始數(shù)據(jù)值SAS變量的值格式化的SAS變量值Informatdollar10.Formatcomma8.548,23125JAN20041609501/25/2004InformatDate9.FormatMMDDYY10.$548,231548231Informat(輸入格式)Format(輸出格式)日期和時間數(shù)據(jù)的存儲SAS采用數(shù)值存儲日期和時間形式的數(shù)據(jù)。在默認情況下,SAS系統(tǒng)以0代表1960年1月1日0時。其它日期在SAS系統(tǒng)中被存儲為與該日期相差的天數(shù)。例如,1960年1月3日,在系統(tǒng)中存為2。
2004年1月25日,在系統(tǒng)中存為16095。注意:為了使數(shù)值型變量顯示日期形式,必須使用日期型的輸出格式,同樣地為了以日期形式輸入日期必須使用日期型的輸入格式。
SAS變量分為兩類,數(shù)值變量(Num)與字符變量(Char)。數(shù)值型變量只能取數(shù)值為值??梢杂姓撎柤靶?shù)點(+、-、?),但不能有逗號(,)。數(shù)值型是SAS的默認變量類型,默認長度為8位。字符型變量可以取字符、字母、特殊字符以及數(shù)字為值。
在DATA步中某些SAS語句所使用的變量名后跟一個美元符號($),即表明該變量是字符型變量,如name$或name$。如果變量后不加$符號,SAS將該變量認為數(shù)值型。因此,對字符型變量應加$符號予以說明。在SAS中一個字符變量的取值可以有1—200個字符長,默認長度為8個字符長。三SAS算符
SAS算符是一些符號,它們要求作比較、算術運算或邏輯運算。
SAS使用兩種主要類型的算符:
前綴算符和中綴算符前綴算符用于變量、常數(shù)、函數(shù)或者用括號括起來的表達式。例如:
+Y-25-COS(A)-(x1+x2-100)
前綴算符有:加號,減號,NOT和符號^。中綴算符作用在算符兩邊的運算對象上,例如6<8。中綴算符一般分為四類:算術算符、比較算符、邏輯算符和其它算符(最大、最小和連接)。1.算術算符:
算術算符表示執(zhí)行一種算術運算,包括:
**乘方*相乘/相除+相加-相減如果算術算符有一個運算對象是缺失值,運算結果也是缺失值。例如,y=x3+.;則y的值為缺失值(.)2.比較算符:
比較算符確定兩個量之間的一種關系,如果這種關系成立,則輸出結果為1(真);如果它不成立,則輸出結果為0(假)。比較算符包括:
=(EQ)等于^=(NE)不等于
>(GT)大于<(LT)小于
>=(GE)大于等于
<=(LE)小于等于(1)算術表達式的比較考慮表達式:A<=B。如果A的值為4,B的值為3,則表達式A<=B的值為0(假);若A的值為5,B的值為9,則表達式A<=B的值為1(真);若A與B的值均為47,則表達式成立,且其值為1。(2)字符的比較比較的對象可以是數(shù)值也可以是字符,但比較的結果總是數(shù)值1(真)或0(假)。字符運算對象在字符之間從左到右被比較。字符次序用機器排列次序確定(即按ASCII碼排列序列)。例如,表達式’GRAY’>’ADAMS’是真的,它與表達式’ANDRE,C’<’ANDRE,CLYDE’一樣,它們的值都是1。3.邏輯算符:
邏輯算符也稱為布爾(Boolean)算符,在表達式里通常用來連接一系列比較式。邏輯算符包括:
&(AND)與;|(OR)或;^(NOT)非例如,age=25
ANDsex=‘男’或age=25
&sex=‘男’
age=25
ORsex=‘男’4.運算次序:
關于運算次序,SAS有如下的三個準則:準則1:在括號里的表達式先計算;準則2:較高優(yōu)先級的運算先被執(zhí)行。
下面是各運算符的優(yōu)先等級(排在前面的優(yōu)先):
1級**、^(not)2級*、/3級+、-、
4級<、<=、=、^=、>、>=、^>、^<5級&(and)6級|(or)準則3:對于相同優(yōu)先級的算符,左邊的運算先做。但有兩個例外:對第一級,右邊的先做;
2**3**2
<->
2**(3**2)2)當兩個比較算符圍著一個量時,則等價于一個and運算。例如:12<age<20
<->
12<ageandage<20一.SAS函數(shù)的定義1.SAS函數(shù)的定義:
SAS函數(shù)是一個子程序,它由0個或幾個自變量返回一個結果值。每個SAS函數(shù)都有一個關鍵詞名字。為了引用函數(shù),要寫出它的名字,然后寫出一個自變量或幾個自變量,它們用括號括起來,這個函數(shù)對這些自變量執(zhí)行某種運算。SAS函數(shù)的形式為:
FunctionName(argument,...)
例如:
MEAN(x,y,z,a)
SUM(x,y,z)
MIN(SUM(x,y,z),1000)§5
SAS函數(shù)2.SAS函數(shù)的分類:
SAS函數(shù)分為17種類型,我們需要接觸的有:算術函數(shù)、數(shù)組函數(shù)、截取函數(shù)、數(shù)學函數(shù)、概率函數(shù)、分位數(shù)函數(shù)、非中心函數(shù)、樣本統(tǒng)計函數(shù)、隨機函數(shù)、字符函數(shù)、日期時間函數(shù)等。二SAS函數(shù)的參數(shù)和結果1.SAS函數(shù)的參數(shù)1)參數(shù)的類型:參數(shù)可以是簡單的變量名、常數(shù)或者表達式。這個表達式還可以包含其它的函數(shù)。例如:
max(cash,credit)sqrt(2500)min(sum(ofx1-x10),y)2)參數(shù)的個數(shù):有些函數(shù)不需要參數(shù)(如DATE()),有些只需要一個參數(shù),有些函數(shù)是對幾個參數(shù)作分析處理。如果函數(shù)的參數(shù)是表達式,則先計算作為參數(shù)的表達式例如:LOG(x+y)這個函數(shù),是先計算x+y,然后調用對數(shù)函數(shù)LOG來計算x+y的對數(shù)。
3)參數(shù)的表示法:一般地,當函數(shù)有幾個參數(shù)時,它們之間必須用逗號(,)分隔開。不過,以下三種寫法均是合法的:
FunctionName(OFvariable1-variablen)FunctionName(OFvariablevariable...)FunctionName(variable,variable,...)
例如:
sum(ofx1-x5)sum(ofx1x2x3x4x5)sum(x1,x2,x3,x4,x5)
是等價的。請問:sum(ofx1--x5)在什么情況下與上面的式子等價?2.函數(shù)的結果:函數(shù)的取值通常取決于參數(shù)的類型,當參數(shù)是字符型變量時,函數(shù)的取值為字符;當參數(shù)為數(shù)值型變量時,函數(shù)的取值為數(shù)值。三.函數(shù)的分類
SAS函數(shù)主要分為以下幾類:
1、數(shù)學函數(shù)
abs():求絕對值
mod(var1,var2):求var1除以var2后的余數(shù)
sqrt():求平方根值
int():取整函數(shù),截取小數(shù)部分
round(var,規(guī)定):按規(guī)定四舍五入。規(guī)定?。?.1,0.01,……log():計算以e為底的對數(shù)值
log10():計算以10為底的對數(shù)值
2、三角函數(shù)
3、概率分布函數(shù)
4、樣本統(tǒng)計函數(shù)
max():求最大值min():求最小值
mean():求均數(shù)std():求標準差
sum():求和
5、隨機函數(shù)
normal():產(chǎn)生一個正態(tài)分布的偽隨機數(shù)
rannor():產(chǎn)生一個標準正態(tài)分布的隨機數(shù)
6、字符函數(shù)
substr():從一個字符串中抽取或取代一個指定的子串
trim():去掉字符串尾部的空格
7、日期時間函數(shù)
year():從變量中抽取“年份”值
month():從變量中抽取“月份”值
day():返回變量的天數(shù)值
mdy(月,日,年):將變量轉換成日期值形式具體的函數(shù)請查閱:
SASOnlineHelp--->SASLanguage--->SASFunctions上機練習題1、SAS常用的窗口有哪三個?請在三個基本窗口之間切換并記住這些命令。2、請在PGM窗口中輸入如下幾行程序,提交系統(tǒng)執(zhí)行,并查看OUTPUT窗和LOG窗中內容,注意不同顏色的含義;并根據(jù)日志窗中的信息修改完善程序。
datsex1;
inputtname$agesex;
cards;
xiaomin
191lidong20
1nana182;
prodprontdats=ex1;
run;
procprintdats=ex1;Varnameagesex;
run;第二章結束第三章DATA步及其語句
為了利用SAS系統(tǒng)對數(shù)據(jù)進行分析,必須將數(shù)據(jù)轉化為SAS數(shù)據(jù)集的形式。SAS系統(tǒng)提供了功能很強的數(shù)據(jù)管理模塊,通過數(shù)據(jù)步(DATASTEP)實現(xiàn)對數(shù)據(jù)的管理。數(shù)據(jù)步在SAS系統(tǒng)中具有十分重要的地位,概括起來其內容主要有:錄入數(shù)據(jù)并轉化為SAS數(shù)據(jù)集;編輯數(shù)據(jù),包括檢查和修改數(shù)據(jù)中的錯誤、計算新變量等;將數(shù)據(jù)寫入磁盤;對已有的數(shù)據(jù)集進行管理。如取子集、合并及更新數(shù)據(jù)集等。學習和掌握好SAS數(shù)據(jù)集是用SAS系統(tǒng)分析數(shù)據(jù)的前提,因此必須熟練掌握SAS數(shù)據(jù)集的有關操作?!?SAS數(shù)據(jù)步(DATASTEP)例1:DATA
da1;
INPUT
x1x2x3;
y=x1+x2+x3;
CARDS;
31.20.522.40.953.20.80.6;
RUN;
以上這些語句組成DATA步。提交后,SAS系統(tǒng)創(chuàng)建一個名為da1的SAS數(shù)據(jù)集。它包含5個觀測、4個變量。DATA步是用DTAT語句開始的一組SAS語句。用于DATA步的SAS語句共有50多個,一般按性質可分為三類:
1、可執(zhí)行語句(X),它是可以產(chǎn)生某種操作的語句。
INPUT語句,賦值語句(如,y=x1+x2)等;
2、定位語句(P),它們在執(zhí)行時并不產(chǎn)生任何操作,但它們在數(shù)據(jù)步中具有重要地位。
DATA語句,CARDS語句等;
3、說明語句(D),用于給系統(tǒng)提供附加的信息,它們在數(shù)據(jù)步中的地位通常并不重要。
FORMAT語句,INFORMAT語句等;
利用SAS系統(tǒng)對數(shù)據(jù)進行統(tǒng)計分析,必須以SAS數(shù)據(jù)集為基礎。因而在進行分析之前必須先將要處理的數(shù)據(jù)按SAS系統(tǒng)的格式存放在一個數(shù)據(jù)文件中,這個過程就是建立SAS數(shù)據(jù)集。
SAS數(shù)據(jù)集實質上是一張關系型數(shù)據(jù)表,即通常所見到的二維表格,一行表示一個觀察(Observation),一列表示一個變量(Variable),行列的交叉點就是該觀察在該變量上的取值。參見下頁示意圖。§2SAS數(shù)據(jù)集的建立SAS數(shù)據(jù)集(部分)ObservationsVariablesValueSAS數(shù)據(jù)集分為兩類:一類是臨時數(shù)據(jù)集,另一類是永久數(shù)據(jù)集。一.臨時數(shù)據(jù)集的建立
以單個詞作為名字的SAS數(shù)據(jù)集稱為臨時數(shù)據(jù)集。在SAS系統(tǒng)運行期間,臨時數(shù)據(jù)集一經(jīng)建立,則該臨時數(shù)據(jù)集一直存在;如果用戶退出SAS系統(tǒng),則臨時數(shù)據(jù)集立即被刪除。用戶重新進入SAS系統(tǒng)后則不能再調用這些已被刪除的臨時數(shù)據(jù)集了。根據(jù)數(shù)據(jù)的存在形式,臨時數(shù)據(jù)集的建立可分為以下幾種情況:1.數(shù)據(jù)在作業(yè)流中
例1就是直接用SAS語句從作業(yè)流中輸入數(shù)據(jù),從而建立所需要的SAS數(shù)據(jù)集的一個例子。一般的形式如下:DATA語句;INPUT語句;(用于DATA步的其它SAS語句)CARDS語句;[數(shù)據(jù)行];RUN;2.數(shù)據(jù)在外部文本文件中例2:在‘c:\txt’子目錄下存放有一個名為id.txt的文件,內容如下:(第一列為姓名,第二列為電話)欲用上述數(shù)據(jù)來建立一個SAS數(shù)據(jù)集,可用下面的DATA步來完成:
DATA
da2;
INFILE
‘c:\txt\id.txt’;
INPUT
name$phone;
RUN;Jinhua 48332728jianghon 47586978taoxian 23459734zhaoheng 85743627shanmei 12395863xuli 74857362xinwei 23485748
從外部文本文件中讀入數(shù)據(jù)來建立SAS數(shù)據(jù)集的一般形式為:
DATA語句;
INFILE語句;
(用于DATA步的其它SAS語句) RUN語句;這里,需要注意兩點:不需要CARDS語句。INFILE語句的作用是打開一個外部文本文件,其格式為:
INFILE’文件說明’;這里,文件說明是指所要引用的外部文件所在的磁盤路徑和文件全名,應用單引號將文件說明括起來。對于這個‘文件說明’,我們還可以采用下面的方式來處理:
m
’n:\txt\id.txt’;Datada2;Infile
m;inputname$phone;run;
在這段程序中,語句的作用是規(guī)定了一個文件標記m
,并用它來表示外部文件id.txt的全路徑文件名。只要在程序中用語句作了這樣的定義,就可以在程序的任何位置用m來引用這個外部文件id.txt了??梢钥闯?,infile’n:\txt\id.txt’;與
m
’n:\txt\id.txt’;
infile
m;
這兩句起著同樣的作用。3.數(shù)據(jù)來自其它SAS數(shù)據(jù)集例3:datada3;Setda1;/*da1是已經(jīng)存在的SAS數(shù)據(jù)集*/ifx1<=5;/*選擇x1小于或等于5的觀測*/run;從一個或幾個已存在的SAS數(shù)據(jù)集產(chǎn)生新的SAS數(shù)據(jù)集的DATA步的一般形式為:
DATA語句;
SET|MERGE;
(用于DATA步的其它SAS語句) RUN;這里,SET、MERGE語句用來識別已存在的SAS數(shù)據(jù)集。豎條“|”表示用戶可以使用這些語句中的一個。
綜上所述,數(shù)據(jù)集的建立是通過數(shù)據(jù)步來實現(xiàn)的。每個數(shù)據(jù)步開頭的DATA語句標志數(shù)據(jù)步的開始,其它的語句稱為程序語句,因為SAS把它們轉換為機器語言,每次通過DATA步來執(zhí)行它們。SAS通過INPUT、SET、MERGE等語句讀入每一個觀測。通常,在原始數(shù)據(jù)含有多個觀測的情況下,系統(tǒng)將重復執(zhí)行這些程序語句直到把輸入數(shù)據(jù)讀入完畢。程序語句還可能含有讓DATA步的一些語句執(zhí)行很多次的語句,例如DO循環(huán)語句等。若數(shù)據(jù)步中不包含INPUT、SET、MERGE語句,則程序語句只執(zhí)行一次。SAS系統(tǒng)為每個DATA步設置了一個自動變量_N_,它的值表示這個DATA步已經(jīng)執(zhí)行的次數(shù)。在DATA步的程序語句中可以使用這個變量。例如:datada1;inputx1x2x3;y=x1+x2+x3;cards;
31.20.522.40.953.20.80.6;Run;
這些語句要求SAS產(chǎn)生一個名為da1的數(shù)據(jù)集,從輸入數(shù)據(jù)行讀3個數(shù)值給相應的3個變量,并建立第四個變量y。在讀入數(shù)據(jù)時,SAS將變量x1,x2,x3視為一個程序數(shù)據(jù)向量,按INPUT語句的指示讀當前記錄的數(shù)據(jù)值,然后又執(zhí)行程序語句,把y的值添加到程序程序數(shù)據(jù)向量中去。因此,對這個DATA步而言,程序數(shù)據(jù)向量包含4個變量:x1,x2,x3,y。當最后一個程序語句執(zhí)行后,在程序數(shù)據(jù)向量中的這些值(即一個觀測)自動地輸送到正被創(chuàng)建的數(shù)據(jù)集da1中,然后SAS返回去再執(zhí)行DATA步。我們這個例子中共有5行數(shù)據(jù),則這個DATA步將執(zhí)行5次,數(shù)據(jù)集da1中包含5個觀測,每個觀測有4個變量。二.建立數(shù)據(jù)集的相關語句1.DATA語句
DATA語句表示一個數(shù)據(jù)步的開始,并給出正被創(chuàng)建的SAS數(shù)據(jù)集的名字。語句格式:
DATA[data-set-name-1[data-set-options-1]]...
其中:
data-set-name:表示在這個DATA步中將要建立的數(shù)據(jù)集名字,可以是一個或多個。
Data-set-options:告訴系統(tǒng)關于正被創(chuàng)建的這個數(shù)據(jù)集的更多信息。這些選項用括號括起來并跟在相應的數(shù)據(jù)集名字的后面。例如:
datanew(drop=y);/*列出不包含在數(shù)據(jù)集中的變量y*/
datanew(keep=x1x2);/*列出包含在數(shù)據(jù)集中的變量x1,x2*/datanew(label=‘healthclubdata’);/*給數(shù)據(jù)集一個附加標簽*/
datanew(rename=(x1=ux2=v));/*把new中的變量x1,x2更名為u,v*/DATA語句中數(shù)據(jù)集名的選擇:1)省略數(shù)據(jù)集名:如:
data;
這時,系統(tǒng)仍建立一個數(shù)據(jù)集,并將自動地把一個作業(yè)中所建立的第一個數(shù)據(jù)集命名為data1,第二個數(shù)據(jù)集命名為data2,...等等。2)使用單個詞(單水平)的名字:例如:
dataone;
表示建立一個名為one的臨時數(shù)據(jù)集。多個數(shù)據(jù)集名字的使用1)建立觀測子集假如有n個觀測數(shù)據(jù),它們是1981,1982,1983這三年中記錄的一些資料,我們想把每一年的資料獨立構成一個數(shù)據(jù)集進行分析處理,使用下面的語句:data
year81
year82year83;inputyearx1-x20;ifyear=1981thenoutput
year81;elseifyear=1982thenoutput
year82;elseifyear=1983thenoutput
year83;cards;數(shù)據(jù)行;2)建立變量子集如果我們想創(chuàng)建幾個包含不同變量組的子集,可以使用數(shù)據(jù)集的選項來實現(xiàn)。例如:dataone(keep=yearx1-x5)two(keep=yearx6-x20)three(drop=x13);inputyearx1-x20;cards;數(shù)據(jù)行;2.INPUT語句:描述一個輸入記錄中數(shù)值的排列情況,同時給相應的變量賦予輸入值。INPUT語句只能用來讀入跟在CARDS語句之后的數(shù)值或存放在外部文件中的數(shù)據(jù)。如果數(shù)據(jù)已經(jīng)在一個SAS數(shù)據(jù)集中,則要使用SET、MERGE、UPDATE或MODIFY語句。
INPUT語句有:表輸入(自由輸入)、列輸入、格式化輸入等方式。我們只介紹表輸入方式:語句格式
INPUTvariable-name-list[$][@@];
這里,$用來指出它前面的變量是字符型的。如果省略$,則默認前面的變量為數(shù)值變量。至于[@@]這個記號,我們放在后面去討論。
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025 小學一年級科學下冊認識常見植物花朵課件
- 2026年玄武巖礦化封存項目可行性研究報告
- 2025年江蘇省徐州市中考生物真題卷含答案解析
- 2025年中級(四級)化學檢驗員(石油化工科研實驗)理論知識試題及答案
- 2025年建筑施工技術練習題庫+答案(附解析)
- 2025年焊工(三級)焊接工藝評估考試試卷(附答案)
- 人力資源部年度工作總結和計劃
- 2025年鼻炎考試試題及答案
- 消防保衛(wèi)措施
- 2025年化工行業(yè)應知應會試題及答案
- 山西省臨汾市2025-2026年八年級上物理期末試卷(含答案)
- (2025年)員工安全培訓考試試題(含答案)
- GB/T 36132-2025綠色工廠評價通則
- 2025-2026學年北師大版八年級數(shù)學上冊期末復習卷(含答案)
- 2026四川成都九聯(lián)投資集團有限公司招聘12人筆試參考題庫及答案解析
- 【二下數(shù)學】計算每日一練60天(口算豎式脫式應用題)
- 殘疾人服務與權益保護手冊(標準版)
- 北京市東城區(qū)2025-2026學年高三上學期期末考試地理 有答案
- 2025年健康體檢中心服務流程手冊
- 2026年黑龍江林業(yè)職業(yè)技術學院高職單招職業(yè)適應性測試備考題庫有答案解析
- 貴金屬產(chǎn)業(yè)2026年發(fā)展趨勢與市場價格波動分析
評論
0/150
提交評論