2章sas系統(tǒng)的數(shù)據(jù)管理2008-課件_第1頁(yè)
2章sas系統(tǒng)的數(shù)據(jù)管理2008-課件_第2頁(yè)
2章sas系統(tǒng)的數(shù)據(jù)管理2008-課件_第3頁(yè)
2章sas系統(tǒng)的數(shù)據(jù)管理2008-課件_第4頁(yè)
2章sas系統(tǒng)的數(shù)據(jù)管理2008-課件_第5頁(yè)
已閱讀5頁(yè),還剩86頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

2章sas系統(tǒng)的數(shù)據(jù)管理2008§2.1SAS系統(tǒng)對(duì)數(shù)據(jù)的管理數(shù)據(jù)直接輸入流行數(shù)據(jù)庫(kù)其它文件格式SAS數(shù)據(jù)集SAS應(yīng)用程序是一種由SAS系統(tǒng)創(chuàng)建和管理的有特殊結(jié)構(gòu)的SAS文件存儲(chǔ)在被稱為SAS數(shù)據(jù)庫(kù)的文件集中SAS數(shù)據(jù)集(Datasets)是一種關(guān)系型結(jié)構(gòu),包括描述部分和數(shù)據(jù)部分描述部分包含了一些關(guān)于數(shù)據(jù)屬性的信息(Viewcolumns)(Properties)數(shù)據(jù)部分是由數(shù)據(jù)構(gòu)成的矩形表觀測(cè)1觀測(cè)2觀測(cè)3VAR1VAR2VAR3VAR4VAR51234abcd3456abcd56782345bcde4567bcde67893456cdef5678cdef7890變量(Variable)對(duì)缺失值(MissingValue)的處理:字符型變量用空格表示數(shù)值型變量用句號(hào)‘.’表示相當(dāng)于記錄或行相當(dāng)于域或字段觀測(cè)變量SAS數(shù)據(jù)庫(kù)存儲(chǔ)了SAS數(shù)據(jù)集(SASDATA)和SAS目錄冊(cè)(SASCATALOG)等SAS專用文件,從而使SAS系統(tǒng)能夠在程序中指明并查閱文件。在Windows操作系統(tǒng)下,SAS數(shù)據(jù)庫(kù)是一種以路徑為基礎(chǔ)的組織方式;每個(gè)SAS數(shù)據(jù)庫(kù)均以庫(kù)標(biāo)記

來(lái)識(shí)別。又稱庫(kù)邏輯名,是某文件所在路徑的別名指系統(tǒng)設(shè)置、聲音、圖象等不能表示成行列結(jié)構(gòu)表格形式的數(shù)據(jù)為永久庫(kù),其所有文件將被保留,庫(kù)標(biāo)記可由用戶指定由系統(tǒng)自動(dòng)指定由系統(tǒng)自動(dòng)指定的臨時(shí)庫(kù),結(jié)束SAS后庫(kù)中的數(shù)據(jù)被自動(dòng)刪除SAS數(shù)據(jù)集采用兩級(jí)命名方式定名:Libname.SAS-filename(庫(kù)標(biāo)記.文件名)如:名為

DST2.FISH的數(shù)據(jù)集默認(rèn)為WORK,即臨時(shí)數(shù)據(jù)集只要有數(shù)據(jù)集名即可SAS8.2以上版本提供了直接管理SAS數(shù)據(jù)庫(kù)及里面文件的SAS管理器(SASExplorer)窗口進(jìn)入SAS管理器窗口的方法:?jiǎn)螕艄ぞ邫谥械膱D標(biāo)進(jìn)入;或:從下拉菜單View中選Explorer。也可通過(guò)其它窗口來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的管理:用LIBNAME命令進(jìn)入Libname窗口;用DIR命令進(jìn)入Dir窗口;用VAR命令進(jìn)入Var窗口(默認(rèn)為顯示臨時(shí)庫(kù)中數(shù)據(jù)集的屬性)

。是否顯示庫(kù)內(nèi)文件的細(xì)節(jié)控制管理器窗口的樹(shù)形顯示是否打開(kāi)返回到程序編輯窗口界面SAS數(shù)據(jù)庫(kù)的設(shè)定在SAS管理器窗口為當(dāng)前活動(dòng)窗口的前提下,從下拉菜單File中選New命令;或:點(diǎn)擊工具欄中的圖標(biāo)。進(jìn)入建立新庫(kù)對(duì)話框:也可使用LIBNAME語(yǔ)句指定SAS庫(kù)標(biāo):LIBNAME庫(kù)名目錄名如:LIBNAME

AA‘C:\SAS\’;(可直接在PGM窗口中運(yùn)行)第二章

SAS系統(tǒng)的數(shù)據(jù)管理§2.1SAS系統(tǒng)對(duì)數(shù)據(jù)的管理§2.2SAS數(shù)據(jù)集的瀏覽和編輯§2.3SAS數(shù)據(jù)集的建立§2.4SAS數(shù)據(jù)集的加工、合并與拼接★★§2.2SAS數(shù)據(jù)集的瀏覽和編輯在SAS系統(tǒng)中,瀏覽和編輯SAS數(shù)據(jù)集必須先設(shè)定SAS數(shù)據(jù)庫(kù),將要瀏覽和編輯的數(shù)據(jù)集存放在已設(shè)定的SAS數(shù)據(jù)庫(kù)中。瀏覽SAS數(shù)據(jù)集的描述部分:Solutions

Desktop

DesktopExplorer

,選中數(shù)據(jù)集按右鍵,在彈出菜單中選Contents;或直接在SAS管理器窗口中選中數(shù)據(jù)集,按右鍵,在彈出菜單中選Viewcolumns

或Properties。瀏覽與編輯SAS數(shù)據(jù)集的數(shù)據(jù)部分:進(jìn)入Viewtable窗口:在數(shù)據(jù)庫(kù)對(duì)話窗中直接雙擊數(shù)據(jù)集圖標(biāo);發(fā)命令:VT數(shù)據(jù)集名或:或:點(diǎn)擊圖標(biāo)進(jìn)入庫(kù)管理對(duì)話窗,雙擊欲選擇的數(shù)據(jù)集,在view下拉菜單中,選擇formview

或tableview

一次只顯示一條記錄以矩陣表格形式顯示數(shù)據(jù),一次可顯示多條記錄瀏覽與編輯SAS數(shù)據(jù)集的數(shù)據(jù)部分:除了Viewtable

窗口外,

FSV等也提供了字符型界面的數(shù)據(jù)集的瀏覽和編輯的窗口,它打開(kāi)數(shù)據(jù)集的速度更快(發(fā)命令FSV數(shù)據(jù)集名即可進(jìn)入fsview窗口);

Insight和AnalystApplication也提供了對(duì)數(shù)據(jù)集瀏覽和編輯的窗口,它們?cè)谏尚伦兞糠矫嬗懈鼜?qiáng)的功能。第二章

SAS系統(tǒng)的數(shù)據(jù)管理§2.1SAS系統(tǒng)對(duì)數(shù)據(jù)的管理§2.2SAS數(shù)據(jù)集的瀏覽和編輯§2.3SAS數(shù)據(jù)集的建立§2.4SAS數(shù)據(jù)集的加工、合并與拼接★★★§2.3SAS數(shù)據(jù)集的建立建立SAS數(shù)據(jù)集的各種途徑數(shù)據(jù)存于紙上(需直接鍵入)數(shù)據(jù)存于文本文件數(shù)據(jù)存于流行數(shù)據(jù)庫(kù)文件中用VIEWTABLE、FSEDIT、FSVIEW編程:用DATA語(yǔ)句用Import菜單用SAS/ACCESS用VIEWTABLE新建數(shù)據(jù)集啟動(dòng)VIEWTABLE窗口在Viewtable窗口內(nèi)選中變量后,從彈出的菜單中選ColumnAttributes,根據(jù)提示對(duì)變量的屬性加以規(guī)定;但對(duì)格式和其它屬性無(wú)特殊要求的也可先輸入數(shù)據(jù),而后設(shè)定各個(gè)變量的屬性。設(shè)定變量屬性發(fā)布命令VIEWTABLE(或VT

);或:利用菜單ToolsTableEditor.數(shù)據(jù)集變量的屬性描述:Name變量名字,由字母或下劃線開(kāi)始,且不超過(guò)8個(gè)字符或數(shù)字Type變量類型,C或者$代表字符型,N或者空格代表數(shù)值型Length變量長(zhǎng)度,缺省為8字節(jié)(≤200)Label變量標(biāo)簽,缺省為40字節(jié)Informat輸入格式名w.dFormat輸出格式名w.d必須界定用VIEWTABLE新建數(shù)據(jù)集—設(shè)定變量屬性用VIEWTABLE新建數(shù)據(jù)集—設(shè)定變量屬性w.d標(biāo)準(zhǔn)的數(shù)字型格式$w.標(biāo)準(zhǔn)的字符型格式COMMAw.d數(shù)字中嵌入逗號(hào)DOLLARw.d數(shù)字中嵌入逗號(hào),數(shù)字前加上$DATAw.日期格式MMDDYYw.日期格式幾種常用的輸入、輸出格式:“w”代表輸入或輸出的寬度;“.”必須的分隔符;“d”小數(shù)部分的長(zhǎng)度。用VIEWTABLE新建數(shù)據(jù)集—設(shè)定變量屬性SAS數(shù)據(jù)集數(shù)據(jù)值的內(nèi)部存放格式并不一定與該數(shù)據(jù)值的輸入和輸出格式一致12234.1212234.1,comma8.2dollar8.28.212234.1212234.12輸出格式8.2comma8.2dollar8.2實(shí)際存儲(chǔ)數(shù)值12234.1212234.11223412234.1234,$12234.1234,12234.1234輸入格式實(shí)際存儲(chǔ)數(shù)值輸入數(shù)據(jù)輸出數(shù)據(jù)$1,234.561234.56dollar8.2用VIEWTABLE新建數(shù)據(jù)集—設(shè)定變量屬性20OCT97ddmmyy8mmddyy8yymmdd8輸出數(shù)據(jù)輸出格式data7ddmmyy8實(shí)際存儲(chǔ)數(shù)值13807日期的輸入、輸出格式:20/10/9710/20/9720/10/9797-10-20日期在SAS內(nèi)部以數(shù)值型變量存儲(chǔ),這個(gè)變量的值等于該日期距離1960年1月1日的天數(shù)輸入數(shù)據(jù)輸入格式1960,1,101960,1,211960,2,131使用Import菜單由文本文件讀入從SAS下拉菜單選擇:File

ImportData,按提示逐步轉(zhuǎn)換外部文件為SAS數(shù)據(jù)集而由FileExportData,則可按提示將SAS數(shù)據(jù)集轉(zhuǎn)換為外部文件在Windows操作系統(tǒng)中,外部文件是指文本文件(格式為.dbf、.xls、.wk1、.wk3等);對(duì)一些用戶規(guī)定格式的文件可提供EFI(ExternalFileInterface外部文件界面)。使用數(shù)據(jù)步(DATASTEP)新建數(shù)據(jù)集以文本方式存放待生成SAS數(shù)據(jù)集的數(shù)據(jù)文件要求:自文本數(shù)據(jù)文件生成SAS數(shù)據(jù)集的一般形式:DATASAS數(shù)據(jù)集名;ATTRIB語(yǔ)句〈設(shè)定變量屬性〉;

INFILE

‘文件名’〈FIRSTOBS=n1OBS=n2〉;

INPUT語(yǔ)句;〈其他SAS語(yǔ)句〉;RUN;關(guān)鍵字DATA后的數(shù)據(jù)集名可以省略,這時(shí)SAS自動(dòng)生成一個(gè)臨時(shí)數(shù)據(jù)集名;也可以使用特殊名字_null_,表示本數(shù)據(jù)步不生成數(shù)據(jù)集。說(shuō)明DATA步中設(shè)定變量屬性的語(yǔ)句:LENGTH變量名〈$〉長(zhǎng)度…;INFORMAT變量名輸入格式…;FORMAT變量名輸出格式…;LABEL變量名=字符串輸入格式…;Length還決定了變量在數(shù)據(jù)集中的次序使用數(shù)據(jù)步(DATASTEP)新建數(shù)據(jù)集INPUT語(yǔ)句INPUT〈設(shè)定1〉…〈設(shè)定n〉〈@|@@〉;設(shè)定的格式:List:變量名〈$〉〈:輸入格式〉Column:變量名〈$〉始列-終列Formatted:指針變量名輸入格式指針:@n|+nNamed:變量名=〈$〉始列-終列輸入換行控制:@:不換行等待下一個(gè)Input語(yǔ)句@@:形成輸出記錄時(shí)輸入也不換行使用數(shù)據(jù)步(DATASTEP)新建數(shù)據(jù)集INPUT語(yǔ)句-List格式(自由格式)INPUT變量名〈$〉〈:輸入格式〉變量名〈$〉〈:輸入格式〉…;源文件中字段間至少有一個(gè)空格或特定字符分隔;字段只能按序輸入;缺失值必須用句點(diǎn)表示;字符變量的值若要包含空格,則在$

符號(hào)后需再加上“&”,而使用&時(shí),在數(shù)據(jù)列表中至少需要兩個(gè)空格來(lái)表示數(shù)據(jù)的結(jié)束。說(shuō)明:使用數(shù)據(jù)步(DATASTEP)新建數(shù)據(jù)集INPUT語(yǔ)句-Column格式INPUT變量名〈$〉始列-終列變量名〈$〉始列-終列…;源文件中各變量所在位置必須是規(guī)則的;每個(gè)變量按指定的始列終列讀入;字符變量的長(zhǎng)度不受缺省值的限制(但≤200);變量值可含空格,變量輸入次序可以是任意的;任何字段或其部分可重復(fù)讀入。說(shuō)明:使用數(shù)據(jù)步(DATASTEP)新建數(shù)據(jù)集INPUT語(yǔ)句-Formatted格式INPUT指針變量名輸入格式指針變量名輸入格式…;指針控制符@n指將輸入指針移動(dòng)到第n列,+n指將輸入指針向后移動(dòng)n列;源文件中各變量所在位置必須是規(guī)則的;每個(gè)變量按輸入格式讀入指定的長(zhǎng)度;可用指針控制下一個(gè)變量讀入的始點(diǎn);變量值可含空格,變量輸入次序可以是任意的;任何字段或其部分可重復(fù)讀入。說(shuō)明使用數(shù)據(jù)步(DATASTEP)新建數(shù)據(jù)集dataCHILD;

infile“C:\SUNNY\例題數(shù)據(jù)資料\CHILD.TXT”;

input

IDX1$X2X3X4;procprint

data=CHILD;run;

【例】(自文本文件生成數(shù)據(jù)集)使用數(shù)據(jù)步(DATASTEP)新建數(shù)據(jù)集DATASAS數(shù)據(jù)集名;ATTRIB語(yǔ)句〈設(shè)定變量屬性〉;

INPUT語(yǔ)句;〈其他SAS語(yǔ)句〉;CARDS;數(shù)據(jù)行

;(說(shuō)明:數(shù)據(jù)行結(jié)束分號(hào)需另起一行)RUN;直接輸入數(shù)據(jù)生成數(shù)據(jù)集的一般步驟比較:【例】

dataXYZ;

attrib

namelength=$12;

input

name$&age;

cards;

Lihua20SunLi-ning25;procprint

data=XYZ;run;

第二章

SAS系統(tǒng)的數(shù)據(jù)管理§2.1SAS系統(tǒng)對(duì)數(shù)據(jù)的管理§2.2SAS數(shù)據(jù)集的瀏覽和編輯§2.3SAS數(shù)據(jù)集的建立§2.4SAS數(shù)據(jù)集的加工、合并與拼接★★★★§2.4SAS數(shù)據(jù)集的加工、合并及拼接★§2.4.1SAS表達(dá)式及數(shù)據(jù)步常用語(yǔ)句§2.4.2使用數(shù)據(jù)步加工SAS數(shù)據(jù)集§2.4.3SAS數(shù)據(jù)集的合并與拼接§2.4.4使用SQLQuery窗加工SAS數(shù)據(jù)集SAS數(shù)據(jù)步程序中的計(jì)算由SAS表達(dá)式完成;SAS表達(dá)式通過(guò)運(yùn)算符、括號(hào)等,將調(diào)用的常量、變量和函數(shù)連接起來(lái),得到一個(gè)計(jì)算結(jié)果。SAS表達(dá)式SAS運(yùn)算符包括算術(shù)、比較和邏輯等運(yùn)算符。算術(shù)運(yùn)算符作用舉例+加法sum=x+y;-減法diff=x-y;*乘法mult=x*y;/除法divide=x/y;**冪運(yùn)算raise=x**y;||字符串拼接str=str1||str2;比較運(yùn)算符運(yùn)算符符號(hào)意義邏輯運(yùn)算符LT<小于(lessthan)GT>大于(greaterthan)EQ=等于(equal)LE<=小于等于(lessequal)GE>=大于等于(greaterequal)NE^=不等于(notequal)IN等于列舉中的一個(gè)AND&并且OR-或者NOT^非SAS運(yùn)算符包括算術(shù)、比較和邏輯等運(yùn)算符。SAS函數(shù)——返回由它的參數(shù)計(jì)算得到的結(jié)果一般形式:函數(shù)名(參數(shù)1,參數(shù)2,…)或:函數(shù)名(OF變量名列表)說(shuō)明:參數(shù)之間以逗號(hào)隔開(kāi),可以是常數(shù)、變量、表達(dá)式或其它函數(shù)例SQRT(X),PROBNORM(X),SUM(ofx1,x10-x20,x25),……SAS提供了遠(yuǎn)多于一般程序語(yǔ)言的標(biāo)準(zhǔn)函數(shù),主要包括數(shù)學(xué)函數(shù)、數(shù)組函數(shù)、字符函數(shù)、日期和時(shí)間函數(shù)、分布密度函數(shù)和分布函數(shù)、分位數(shù)函數(shù)、隨機(jī)數(shù)函數(shù)、樣本統(tǒng)計(jì)函數(shù)等,它們可以直接用于數(shù)據(jù)步計(jì)算中。SAS函數(shù)——返回由它的參數(shù)計(jì)算得到的結(jié)果DATAABC;INPUTx1x2x3x4;CARDS;123423455678;DATAA123;SETABC;

X=sum(ofx1,x2,x3,x4);PROCPRINT;RUN;常用數(shù)學(xué)函數(shù)ABS(x)——絕對(duì)值函數(shù),對(duì)x取絕對(duì)值;MAX(x1,x2,…,xn)——最大值函數(shù),求所有自變量中的最大值;MIN(x1,x2,…,xn)——最小值函數(shù),求所有自變量中的最小值;MOD(x,y)——余數(shù)函數(shù),求x除以y的余數(shù);SQRT(x)——平方根函數(shù),求x的平方根;ROUND(x,eps)——舍入函數(shù),求x按eps指定精度四舍五入后的結(jié)果;INT(x)——取整函數(shù),對(duì)x取整數(shù)部分;LOG(x)——自然對(duì)數(shù)函數(shù),求x的整數(shù)部分;EXP(x)——指數(shù)函數(shù),求x的指數(shù)函數(shù)ex;SIN(x),COS(x),TAN(x)——三角函數(shù),分別求x的正弦、余弦、正切函數(shù);ARSIN(x),ARCOS(x),ARTAN(x)——反三角函數(shù),分別求x的反正弦、反余弦、反正切函數(shù);等等常用數(shù)組函數(shù)DIM(x)——求數(shù)組x第一維的元素的個(gè)數(shù);DIMk(x)——求數(shù)組x第k維的元素的個(gè)數(shù);LBOUND(x)——求數(shù)組x第一維的下界;HBOUND(x)——求數(shù)組x第一維的上界;LBOUNDk(x)——求數(shù)組x第k維的下界;HBOUNDk(x)——求數(shù)組x第k維的上界.常用字符函數(shù)TRIM(s)——返回去掉字符串s的尾隨空格的結(jié)果;UPCASE(s)——把字符串s中所有小寫字母轉(zhuǎn)換為大寫字母后的結(jié)果;LOWCASE(s)——把字符串s中所有大寫字母轉(zhuǎn)換為小寫字母后的結(jié)果;INDEX(s,s1)——查找s1在s中出現(xiàn)的位置,找不到時(shí)返回0;RANKS(s)——字符s的ASCII碼值;等等常用日期和時(shí)間函數(shù)MDY(m,d,yr)——生成yr年m月d日的SAS日期;YEAR(date)——由SAS日期值date得到年;MONTH(date)——由SAS日期值date得到月;DAY(date)——由SAS日期值date得到日;WEEKDAY(date)——由SAS日期值date得到星期幾;QTR(date)——由SAS日期值date得到季度值;HMS(h,m,s)——由小時(shí)h、分鐘m、秒s生成SAS時(shí)間值;DHMS(d,h,m,s)——由SAS日期值d、小時(shí)h、分鐘m、秒s生成SAS時(shí)間值;等等DATA步中的常用語(yǔ)句PUT語(yǔ)句——輸出語(yǔ)句SET語(yǔ)句——讀取觀測(cè)語(yǔ)句ATTRIB語(yǔ)句——設(shè)定變量屬性賦值語(yǔ)句——計(jì)算SAS表達(dá)式,給變量賦值DROP語(yǔ)句——?jiǎng)h除變量語(yǔ)句KEEP語(yǔ)句——保留變量語(yǔ)句IF語(yǔ)句——條件語(yǔ)句DO-END語(yǔ)句——循環(huán)語(yǔ)句DELETE語(yǔ)句——?jiǎng)h除語(yǔ)句OUTPUT語(yǔ)句——輸出到數(shù)據(jù)集語(yǔ)句COMMENT語(yǔ)句——注釋語(yǔ)句ARRAY語(yǔ)句——數(shù)組語(yǔ)句PUT語(yǔ)句:用來(lái)顯示輸出結(jié)果,輸出結(jié)果直接顯示在LOG窗口中DATA步中的常用語(yǔ)句輸出項(xiàng)可以是變量名或字符串,但不能是數(shù)值常量或表達(dá)式,各項(xiàng)之間需用空格分開(kāi);輸出項(xiàng)還可以指定具體列位置;為使輸出不產(chǎn)生換行,可在PUT語(yǔ)句的結(jié)尾處加一個(gè)@符號(hào)。說(shuō)明:一般形式:PUT輸出項(xiàng)1輸出項(xiàng)2…或:

PUT變量名=例DATAabc;X=0.5;Y=sin(x);

PUT

“Sinefuntionvalueof”x“is”y;

PUT

x=y=;

PUT

x10-20.6y30-40.6;RUN;DATA步中的常用語(yǔ)句SET語(yǔ)句:把一個(gè)已有數(shù)據(jù)集復(fù)制到一個(gè)新數(shù)據(jù)集,同時(shí)還可以進(jìn)行修改DATA步中的常用語(yǔ)句KEEP=

:表示引入時(shí)只要指定的變量;DROP=:表示不引入指定的變量;OBS=:表示讀取觀測(cè)時(shí)讀到指定的序號(hào)為止;FIRST=:表示從指定序號(hào)的觀測(cè)開(kāi)始讀取而跳過(guò)之前的觀測(cè)不讀。數(shù)據(jù)集選項(xiàng)主要有:一般形式:SET數(shù)據(jù)集名(數(shù)據(jù)集選項(xiàng))ATTRIB語(yǔ)句:用來(lái)指定變量的類型、標(biāo)簽、長(zhǎng)度、輸入輸出格式等變量屬性DATA步中的常用語(yǔ)句一般形式:ATTRIB

變量名屬性變量名屬性…屬性的表示方法為“屬性名=屬性值”;可以同時(shí)指定多個(gè)變量的屬性,也可以為一個(gè)變量同時(shí)指定多個(gè)屬性。說(shuō)明:例DATAsales;

ATTRIBnameLABEL=“姓名”LENGTH=$10dateLABEL=“日期”FORMAT=yymmdd10.INFORMAT=yymmdd10.amountLABEL=“金額”FORMAT=10.2;INPUTname$1-10dateamount;

Cards;

張鵬2003/03/182000

李志明2003/05/231500

王敏2003/09/013000;RUN;PROCPRINTNOOBSLABEL;RUN;賦值語(yǔ)句:用于計(jì)算一個(gè)SAS表達(dá)式,并將表達(dá)式的值賦給變量一般形式為:

Var=expression為新建或修改的變量名為由變量、SAS函數(shù)和四則運(yùn)算構(gòu)成的表達(dá)式DATA步中的常用語(yǔ)句條件語(yǔ)句的一般形式為:

IF條件表達(dá)式THEN可執(zhí)行語(yǔ)句;ELSE可執(zhí)行語(yǔ)句(不是必須的);條件表達(dá)式主要包含操作數(shù)和操作符:操作數(shù)變量名常數(shù)比較操作符邏輯操作符操作符DATA步中的常用語(yǔ)句DO-END語(yǔ)句:在DO后面直到END語(yǔ)句之前的所有語(yǔ)句作為一個(gè)單元(稱為一個(gè)DO組)被執(zhí)行,任意多個(gè)DO組能夠被嵌套執(zhí)行。常用類型有:

簡(jiǎn)單DO語(yǔ)句——常用在IF-THEN/ELSE語(yǔ)句里,根據(jù)IF語(yǔ)句的條件判斷結(jié)果來(lái)確定語(yǔ)句組的執(zhí)行……;IfX>5thendo;Y=X﹡10;

putX=Y=;

end;Z=X+3;……;DATA步中的常用語(yǔ)句

data_null_;

doI=1to6by2;

putI=;

end;

run;

循環(huán)DO語(yǔ)句——使DO和END之間的語(yǔ)句根據(jù)循環(huán)控制變量的值重復(fù)被執(zhí)行DO

循環(huán)控制變量=初值

TO

終值

BY

步長(zhǎng);其它可執(zhí)行程序;END;DATA步中的常用語(yǔ)句

datamalesfemales;

set

child;

if

x1=‘m’thenoutputmales;

elseoutputfemales;

run;

OUTPUT語(yǔ)句——使SAS系統(tǒng)輸出當(dāng)前的觀測(cè)或DO組中的變量到正被創(chuàng)建的數(shù)據(jù)集中說(shuō)明:所有規(guī)定的數(shù)據(jù)集的名字也必須在DATA語(yǔ)句中出現(xiàn)DATA步中的常用語(yǔ)句OUTPUT

〔數(shù)據(jù)集1〕…

〔數(shù)據(jù)集n〕;一般形式為:

COMMENT語(yǔ)句——為注釋語(yǔ)句,可放在SAS過(guò)程的任何地方用來(lái)說(shuō)明這個(gè)過(guò)程的目的,如解釋說(shuō)明程序中的一些獨(dú)特的程序段,或介紹整個(gè)程序等。DATA步中的常用語(yǔ)句*注釋內(nèi)容;或:/*注釋內(nèi)容*/一般形式為:

*循環(huán)DO語(yǔ)句;(或:/*循環(huán)DO語(yǔ)句*/)data_null_;

doI=1to6by2;

put

I=;

end;run;數(shù)組:SAS過(guò)程中使用同一個(gè)名字稱呼,用下標(biāo)來(lái)區(qū)分的合在一起的同為數(shù)值型或同為字符型的一組變量數(shù)值型數(shù)組ARRAY數(shù)組名(維數(shù)說(shuō)明)數(shù)組元素名列表(初始值表);例如:ARRAY

tests(3)MathChineseEnglish(0,0,0);ARRAY

x(3);ARRAY

tests(*)MathChineseEnglish(0,0,0);ARRAY

table(2,2)x11x12x21x22;字符型數(shù)組ARRAY數(shù)組名(維數(shù)說(shuō)明)$元素長(zhǎng)度說(shuō)明

數(shù)組元素名列表(初始值表);例如ARRAY

names(3)$10childfathermother;數(shù)組:SAS過(guò)程中使用同一個(gè)名字稱呼,用下標(biāo)來(lái)區(qū)分的合在一起的同為數(shù)值型或同為字符型的一組變量DATAabc;

ARRAY

x(10);

DOi=1to1000;

DOj=1to10;x(j)=normal(0);

END;OUTPUT;END;DROPij;RUN;DATAnew;

SETabc(obs=100keep=x1x2);PROCPRINT;RUN;正態(tài)分布隨機(jī)數(shù)函數(shù)§2.4SAS數(shù)據(jù)集的加工、合并及拼接★★§2.4.1SAS表達(dá)式及數(shù)據(jù)步常用語(yǔ)句§2.4.2使用數(shù)據(jù)步加工SAS數(shù)據(jù)集§2.4.3SAS數(shù)據(jù)集的合并與拼接§2.4.4使用SQLQuery窗加工SAS數(shù)據(jù)集加工SAS數(shù)據(jù)集(增改刪數(shù)據(jù)集中的變量和記錄)菜單:SQLQuery窗編程:數(shù)據(jù)步§2.4SAS數(shù)據(jù)集的加工、合并及拼接在生成SAS數(shù)據(jù)集時(shí)進(jìn)行:在Input語(yǔ)句后加入各種語(yǔ)句對(duì)已有SAS數(shù)據(jù)集進(jìn)行加工:在Set語(yǔ)句后加入各種語(yǔ)句使用數(shù)據(jù)步加工SAS數(shù)據(jù)集——增改刪數(shù)據(jù)集中的變量和記錄DATA數(shù)據(jù)集名(新);……;

INPUT……;其他SAS語(yǔ)句;RUN;在Input語(yǔ)句后加入其它SAS語(yǔ)句DATA數(shù)據(jù)集名(新);

SET數(shù)據(jù)集名(舊);

INPUT……;其他SAS語(yǔ)句;RUN;或:用Set語(yǔ)句,并加入其它SAS語(yǔ)句選擇變量在DATA語(yǔ)句中用選項(xiàng)DROP=和KEEP=在SET語(yǔ)句中用選項(xiàng)DROP=和KEEP=

在DATA步中加入

DROP語(yǔ)句KEEP語(yǔ)句其一般形式為:DATA數(shù)據(jù)集(DROP(或KEEP)=變量序列);SET數(shù)據(jù)集(DROP(或KEEP)=變量序列);使用數(shù)據(jù)步加工SAS數(shù)據(jù)集選擇觀測(cè)在DATA語(yǔ)句中用選項(xiàng)WHERE=在SET語(yǔ)句中用選項(xiàng)WHERE=

在SET語(yǔ)句中用選項(xiàng)FIRSTOBS=和/或OBS=或:利用子集IF語(yǔ)句選擇觀測(cè)保留:IFexpression;剔除:IFexpressionTHENDELETE;使用數(shù)據(jù)步加工SAS數(shù)據(jù)集DATAabc1;

SETsunny.bclass;

keepnameageheight;

whereage=13;RUN;PROCPRINT;RUN;例使用數(shù)據(jù)步加工SAS數(shù)據(jù)集DATAabc2;

SETsunny.bclass(keep=nameageheight);whereage=14;RUN;PROCPRINT;RUN;DATAabc3(keep=nameageheight);

SETsunny.bclass(where=(age>14));RUN;PROCPRINT;RUN;例DATAclassmclassf;

SETsunny.bclass;

SELECT(sex);

When('男')outputclassm;

When('女')outputclassf;

Otherwiseputsex='有錯(cuò)';

End;Dropsex;RUN;PROC

PRINT

data=classm;RUN;PROC

PRINT

data=classf;RUN;例(用SET和OUTPUT語(yǔ)句拆分?jǐn)?shù)據(jù)集)§2.4SAS數(shù)據(jù)集的加工、合并及拼接★★★§2.4.1SAS表達(dá)式及數(shù)據(jù)步常用語(yǔ)句§2.4.2使用數(shù)據(jù)步加工SAS數(shù)據(jù)集§2.4.3SAS數(shù)據(jù)集的合并與拼接§2.4.4使用SQLQuery窗加工SAS數(shù)據(jù)集SAS數(shù)據(jù)集的排序事先對(duì)SAS數(shù)據(jù)集進(jìn)行排序,是其它SAS程序通過(guò)使用BY語(yǔ)句直接調(diào)用該數(shù)據(jù)集及對(duì)數(shù)據(jù)集進(jìn)行合并或串接的前提。PROCSORTOPTIONS;BY〔DESCENDING〕變量名列表;END;§2.4SAS數(shù)據(jù)集的加工、合并及拼接對(duì)SORT過(guò)程語(yǔ)句的說(shuō)明選項(xiàng)OPTIONS可為:DATA=數(shù)據(jù)集指出要排序的數(shù)據(jù)集名,缺省表示使用最近的SAS數(shù)據(jù)集;OUT=數(shù)據(jù)集規(guī)定輸出數(shù)據(jù)集名,缺省表示用排序后的數(shù)據(jù)集替代原數(shù)據(jù)集;NODUPLICATES

在排序后檢查和刪除相鄰的重復(fù)觀測(cè);BY語(yǔ)句中的DESCENDING表示對(duì)其后的變量值按降序排列,缺省表示升序(ASCENDING)。SAS數(shù)據(jù)集的排序PROCSORT

DATA=SUNNY.BCLASSOUT=ABC

;BYDESCENDING

AGE

;PROC

PRINT

;RUN;SAS數(shù)據(jù)集的排序例合并或串接SAS數(shù)據(jù)集SAS數(shù)據(jù)集SAS數(shù)據(jù)集ABSAS數(shù)據(jù)步數(shù)據(jù)串接數(shù)據(jù)并接AABB§2.4SAS數(shù)據(jù)集的加工、合并及拼接用SET語(yǔ)句串接SAS數(shù)據(jù)集Concatenate方式:DATA新數(shù)據(jù)集;SET輸入數(shù)據(jù)集1輸入數(shù)據(jù)集2……;RUN;Interleave方式:DATA新數(shù)據(jù)集;SET輸入數(shù)據(jù)集1輸入數(shù)據(jù)集2……;BYby-variables;RUN;(需事先對(duì)數(shù)據(jù)集進(jìn)行排序)串接SAS數(shù)據(jù)集NUMVARA125A1A2A3NUMVARB346B1B2B3NUMVARAVARB125346A1A2A3B1B2B3A1:COMBINE:B1:DATACOMBINE;SETSUNNY.A1SUNNY.B1;PROCPRINT;RUN;(Concatenate)(直接上下合并)NUMVARA125A1A2A3NUMVARB346B1B2B3NUMVARAVARB123456A1A2A3B1B2B3A1:COMBINE:B1:(Interleave)串接SAS數(shù)據(jù)集DATACOMBINE;SETSUNNY.A1SUNNY.B1;BYNUM;PROCPRINT;RUN;(交錯(cuò)合并)NUMVAR1223C1C2C3C4NUMVAR233D1D2D3NUMVAR1222333C1C2C3D1C4D2D3C1:COMBINE:D1:DATACOMBINE;SETSUNNY.C1SUNNY.D1;BYNUM;PROCPRINT;RUN;(Interleave)串接SAS數(shù)據(jù)集(交錯(cuò)合并)DATASCORE1;

INPUTNAME$SEX$MATHPHYENGCHE;

CARDS;CHENF80859065LIM75896075LINM81836780;DATASCORE2;

INPUTNAME$SEX$MATHPHY;

CARDS;ZHANGM7889WANGF9587;DATASCORE;

SETSCORE1SCORE2;PROCPRINT;RUN;例DATAnew;

setclassm(in=male)classf(in=female);

ifmale=1

thensex='男';

iffemale=1

thensex='女';RUN;PROCPRINT;RUN;

(把拆分后的數(shù)據(jù)集合并)例用來(lái)指示每一個(gè)觀測(cè)來(lái)源的數(shù)據(jù)集,變量取1表示觀測(cè)來(lái)自此數(shù)據(jù)集,取0表示非來(lái)自此數(shù)據(jù)集MERGE

(一對(duì)一合并)DATA新數(shù)據(jù)集;MERGE輸入數(shù)據(jù)集1輸入數(shù)據(jù)集2……;RUN;DATA新數(shù)據(jù)集;MERGE輸入數(shù)據(jù)集1輸入數(shù)據(jù)集2……;BYby-variables;RUN;用MERGE語(yǔ)句并接SAS數(shù)據(jù)集MATCHMERGE(匹配合并)——需事先對(duì)數(shù)據(jù)集進(jìn)行排序NUMVARA123A1A2A3NUMVARB124B1B2B3NUMVARAVARB124A1A2A3B1B2B3A2:COMBINE:B2:DATACOMBINE;

MERGESUNNY.A2SUNNY.B2;PROCPRINT;RUN;MERGE(一對(duì)一合并)用MERGE語(yǔ)句并接SAS數(shù)據(jù)集NUMVARA123A1A2A3NUMVARB124B1B2B3NUMVARAVARB1234A1A2A3B1B2B3A2:COMBINE:B2:DATACOMBINE;

MERGESUNNY.A2SUNNY.B2;BYNUM;PROCPRINT;RUN;MATCHMERGE(匹配合并)—方法1用MERGE語(yǔ)句并接SAS數(shù)據(jù)集NUMVARA123A1A2A3NUMVARB224B1B2B3NUMVARAVARB12234A1A2A2A3B1B2B3A2:COMBINE:C2:MATCHMERGE(匹配合并)—方法1用MERGE語(yǔ)句并接SAS數(shù)據(jù)集DATACOMBINE;

MERGESUNNY.A2SUNNY.C2;BYNUM;PROCPRINT;RUN;DATAPERSON;INPUTNUMBERNAME$SEX$AGE;CARDS;10001ZHANGF2010003LIM2210002WANGM2010001LINF21;PROCSORT;BYNUMBER;DATALANGUAGE;INPUTNUMBERLANGUAGE$SCORE;CARDS;10001ENGLISH9010002JAPANESE851001RUSRIAN79;PROCSORT;BYNUMBER;DATARESULT;MERGEPERSONLANGUAG

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論