




已閱讀5頁(yè),還剩84頁(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)介
第6章 創(chuàng)建數(shù)據(jù)集,蔡德利 tsaid 黑龍江八一農(nóng)墾大學(xué)植物科技學(xué)院,本章主要內(nèi)容,概述 data step 加工數(shù)據(jù)集 proc step,概述,sas對(duì)數(shù)據(jù)的管理 通常,有兩種: sas數(shù)據(jù)集(data set) sas數(shù)據(jù)視圖(data view),概述,概述,sas數(shù)據(jù)視圖只有描述部分,沒有數(shù)據(jù)部分,但描述部分包含了足夠的信息以找到保存在其他文件中的數(shù)據(jù); 數(shù)據(jù)視圖減少了維護(hù)費(fèi)用。 如果改變了源數(shù)據(jù),數(shù)據(jù)視圖將隨著改變。 可由sql、access和data step產(chǎn)生。,概述,libname命令 作用:指定庫(kù)標(biāo)記。 一般格式: libname 庫(kù)標(biāo)記 文件夾位置 選項(xiàng); 例如:指定目錄“g:sas統(tǒng)計(jì)分析sas”為庫(kù)標(biāo)記mysaslib libname mysaslib g:sas統(tǒng)計(jì)分析sas;,概述,sas語(yǔ)言是一種專用的數(shù)據(jù)管理、分析語(yǔ)言,它提供了很強(qiáng)的數(shù)據(jù)操作能力。 表現(xiàn)在 它可以輕易地讀入任意復(fù)雜格式的輸入數(shù)據(jù),并可以對(duì)輸入的數(shù)據(jù)進(jìn)行計(jì)算、子集選擇、更新、合并、拆分等操作。 另外,sas系統(tǒng)還提供了用來(lái)訪問其它數(shù)據(jù)庫(kù)系統(tǒng)如sybase、oracle的接口,訪問各種微機(jī)用數(shù)據(jù)庫(kù)文件如foxpro、excel的接口及向?qū)В⑻峁┝艘粋€(gè)sql過(guò)程來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)查詢語(yǔ)言sql的功能。,概述,sas語(yǔ)言的自編程計(jì)算功能主要在數(shù)據(jù)步實(shí)現(xiàn)。 一個(gè)sas數(shù)據(jù)步相當(dāng)于一個(gè)單獨(dú)運(yùn)行的程序。 但是,sas語(yǔ)言又是一個(gè)專用數(shù)據(jù)處理語(yǔ)言,所以sas數(shù)據(jù)步有其他語(yǔ)言所沒有的特點(diǎn)。,概述,例如 /* sasprog0601.sas */ data a; put x= y= z=; input x y; z=x+y; put x= y= z=; cards; 10 20 100 200 ; run;,概述,運(yùn)行后在log窗口顯示 x=. y=. z=. x=10 y=20 z=30 x=. y=. z=. x=100 y=200 z=300 x=. y=. z=. note: the data set work.a has 2 observations and 3 variables. ,概述,程序的運(yùn)行流程: 1. data語(yǔ)句標(biāo)志了數(shù)據(jù)步開始,并指定了數(shù)據(jù)步結(jié)束時(shí)要生成的數(shù)據(jù)集名字為a(實(shí)際是work.a)。 2. 第一個(gè)put語(yǔ)句要輸出變量x、y、z的值, 但它們還都沒有定義,所以顯示為三個(gè)缺失值。 3. input語(yǔ)句,從cards語(yǔ)句后面的數(shù)據(jù)行中讀取變量x的值10,變量y的值20。 4. 下一個(gè)賦值語(yǔ)句計(jì)算變量z的值得到30。因此,log 中的第二行輸出顯示三個(gè)變量的值分別為10、20、30。,概述,5. 從cards語(yǔ)句開始到空分號(hào)行的各行是非執(zhí)行的,程序運(yùn)行到run語(yǔ)句,發(fā)現(xiàn)這是本數(shù)據(jù)步的最后一個(gè)語(yǔ)句,按一般的程序語(yǔ)言的規(guī)則,程序到這里就應(yīng)該結(jié)束了,但是,sas是一個(gè)專用數(shù)據(jù)處理語(yǔ)言,如果按一般語(yǔ)言的規(guī)則,程序中的第二行數(shù)據(jù)(100 200)就不能被讀入。所以,這個(gè)程序運(yùn)行到run語(yǔ)句后,把讀入的觀測(cè)(這是第一號(hào)觀測(cè))寫入輸出數(shù)據(jù)集, 6. 流程又返回到data語(yǔ)句后的第一個(gè)可執(zhí)行語(yǔ)句開始執(zhí)行,并先把所有的變量置初值為缺失值。于是,第一個(gè)put語(yǔ)句的結(jié)果顯示三個(gè)變量均為缺失值,而不是上一步的10、20、30。,概述,7. input語(yǔ)句又從數(shù)據(jù)行中讀入下一個(gè)觀測(cè),把變量x、y賦值為100、200。讀取位置由運(yùn)行時(shí)設(shè)置的一個(gè)數(shù)據(jù)指針指示。然后計(jì)算變量z的值得300。于是put語(yǔ)句輸出的x、y、z值分別為100、200、300。 8. 流程跳過(guò)cards語(yǔ)句到空語(yǔ)句,到數(shù)據(jù)步結(jié)尾,把第二號(hào)觀測(cè)輸出到數(shù)據(jù)集。 9. 再返回到數(shù)據(jù)步開頭,把變量值賦初值為缺失值,所以第一個(gè)put語(yǔ)句輸出的三個(gè)變量值為缺失值。 10. 運(yùn)行到input語(yǔ)句,應(yīng)該讀入下一個(gè)觀測(cè),但是查詢數(shù)據(jù)指針發(fā)現(xiàn)已經(jīng)讀完了所有數(shù)據(jù),所以本數(shù)據(jù)步結(jié)束,并把兩個(gè)觀測(cè)寫入數(shù)據(jù)集work.a中。,概述,從這個(gè)例子可以看出sas數(shù)據(jù)步程序和普通程序的一個(gè)重大區(qū)別: sas數(shù)據(jù)步如果有數(shù)據(jù)輸入,比如用input、set、merge、update、modify等語(yǔ)句讀入數(shù)據(jù),則數(shù)據(jù)步中隱含了一個(gè)循環(huán)。,數(shù)據(jù)步因?yàn)橛羞@樣一個(gè)隱含循環(huán),所以也提供了用來(lái)查詢某一步是第幾次循環(huán)的特殊變量 _n_,它的值為數(shù)據(jù)步循環(huán)計(jì)數(shù)值。,概述,data step 流程:,概述,data step,第一種方式語(yǔ)法: data 數(shù)據(jù)集名; input 變量列表; cards; ;,data、input和cards三個(gè)關(guān)鍵詞缺一不可。,注意:cards語(yǔ)句在input語(yǔ)句之后,data step,data語(yǔ)句 作用: 標(biāo)志數(shù)據(jù)步的開始。 命名將要?jiǎng)?chuàng)建的sas數(shù)據(jù)集。 cards語(yǔ)句 作用: 用于直接輸入數(shù)據(jù),標(biāo)志著數(shù)據(jù)塊的開始,data step,直接輸入sas數(shù)據(jù): /* sasprog0602.sas */ data temp; input x y; cards; 34 56 78 90 35 67 89 10 23 65 77 45 ; run;,sas默認(rèn)按列來(lái)分隔變量,可是這里只有兩個(gè)變量,輸成兩列數(shù)據(jù)太長(zhǎng),因此加上,sas見到這個(gè)符號(hào),在按變量名依次讀取完數(shù)據(jù)后,不是跳到下一行,而是繼續(xù)在該行讀數(shù)據(jù),直至本行結(jié)束或到達(dá)分號(hào)為止。,數(shù)據(jù)集work.temp 輸入變量x,y, 的作用是不換行,連續(xù)輸入,data step,第二種方式語(yǔ)法: data 數(shù)據(jù)集名; infile 文件名 input 變量列表;,用infile語(yǔ)句指定了一個(gè)外部數(shù)據(jù)文件,所有需要輸入的數(shù)據(jù)存放在該文件中,從而取代了第一種方式中的cards語(yǔ)句及其下列的一連串?dāng)?shù)據(jù),當(dāng)數(shù)據(jù)比較多的時(shí)候,用第二種方式可以使程序看上去顯得比較簡(jiǎn)潔。,注意:infile語(yǔ)句在input語(yǔ)句之前,data step,infile語(yǔ)句 作用: 確定一個(gè)包含原始數(shù)據(jù)的外部文本文件。 一般格式: infile 外部文件名 options; 選項(xiàng)(options)可以有選擇地讀取外部文件中的記錄: firstobs=n1表示從第n1條記錄開始讀取 obs=n2表示共讀取n2條記錄,data step,從外部文件讀入數(shù)據(jù)示例: /* sasprog0603.sas */ data temp; infile g:sas統(tǒng)計(jì)分析sasdatatemp.dat; input x y; run;,data step,input語(yǔ)句 作用: 讀入由語(yǔ)句指定的數(shù)據(jù)列。 為相應(yīng)的數(shù)據(jù)域定義變量名。 確定變量的讀入模式。 一般格式: input 設(shè)定1設(shè)定n|;,data step,設(shè)定的四種格式: list:變量名 $:輸入格式 column :變量名 $始列-終列 formatted :指針 變量名 輸入格式 ( 指針:n|+n ) named :變量名=$始列-終列 輸入換行控制: :不換行等待下一個(gè)input 語(yǔ)句 :形成輸出記錄時(shí)輸入也不換行,data step,input語(yǔ)句-list格式(自由格式),input 變量名 $:輸入格式 變量名 $:輸入格式;,說(shuō)明: 源文件中字段間至少有一個(gè)空格或特定字符分隔; 字段只能按序輸入; 缺失值必須用句點(diǎn)(.)表示; 字符變量的值不能含有空格,長(zhǎng)度一般不超過(guò)8。,data step,/* sasprog0604.sas */ data c9501; input name $ sex $ math chinese; cards; 李明 男 92 98 張紅藝 女 89 106 王思明 男 86 90 張聰 男 98 109 劉穎 女 80 110 ; run;,按順序列出每個(gè)觀測(cè)的各個(gè)變量名,中間用空格分開。 變量如果是字符型,需要在變量名后加一個(gè)$符號(hào),$符號(hào)可以與變量直接相連,也可以間隔一個(gè)空格。,data step,/* sasprog0605.sas */ data a; input date yymmdd8. sales; format date yymmdd10.; cards; 56-6-13 1100 67.12.15 1200 78 10 2 1300 891001 1400 19960101 1500 20020901 1600 ; run; proc print; run;,需要按格式輸入,可在變量名后加格式名,最常用的是輸入日期數(shù)據(jù); 本例日期占8列,不足用空格補(bǔ)足; 日期在sas中是按數(shù)值存儲(chǔ)的,要顯示日期值,必須設(shè)置輸出格式,本例用format語(yǔ)句。,data step,/* sasprog0606.sas */ data b; input date yymmdd10. sales; format date yymmdd10.; cards; 56-6-13 1100 67.12.15 1200 78 10 2 1300 891001 1400 19960101 1500 20020901 1600 1956-6-13 1100 1967.12.15 1200 1978 10 2 1300 19891001 1400 19960101 1500 20020901 1600 ; run; proc print; run;,yymmdd六位數(shù)的日期 yyyymmdd帶世紀(jì)格式的日期 yyyymmdd10.帶世紀(jì)的,中間有分隔符或無(wú)分隔符的日期,data step,/* sasprog0607.sas */ data b; input sales date : yymmdd10. ; format date yymmdd10.; put date=; cards; 1100 56-6-13 1200 67.12.15 ; run;,如果日期變量不在第一項(xiàng),并且與前一項(xiàng)用空白分隔,可以在格式名yymmdd10.前面加一個(gè)冒號(hào)表示允許日期值前面的空白。 “變量名:格式”表示讀取當(dāng)前第一個(gè)非空列開始的值,并用指定的輸入格式轉(zhuǎn)換。,data step,input語(yǔ)句-column格式,input 變量名 $始列-終列 變量名 $始列-終列;,說(shuō)明: 源文件中各變量所在位置必須是規(guī)則的; 每個(gè)變量按指定的始列、終列讀入; 字符變量的長(zhǎng)度不受缺省值的限制(但200); 變量值可含空格,變量輸入次序可以是任意的;任何字段或其部分可重復(fù)讀入。,data step,一個(gè)典型原始數(shù)據(jù)文件(overseas.dat)內(nèi)容:,data step,練習(xí):用column格式讀入文件overseas.dat,創(chuàng)建sas數(shù)據(jù)集名為mylib.column,最后查看該數(shù)據(jù)集的內(nèi)容。 /* sasprog0608.sas */ data mylib.column; infile e:sas統(tǒng)計(jì)分析sasdataoverseas.dat; input date $ 1-9 dest $ 10-12 boarded 13-15; run; proc print data=mylib.column; run;,data step,/* sasprog0609.sas */ data c9502; input name $ 1-7 sex $ 8-9 math 11-12 chinese 14-16; cards; 李明 男 92 98 張紅藝 女 89 106 王思明 男 86 90 張聰 男 98 109 劉穎 女 80 110 ; run;,將sasprog0603的例子改為數(shù)據(jù)上下行對(duì)齊,然后用column格式讀入。,data step,/* sasprog0610.sas */ data pids; input year 7-10 mon 11-12 day 13-14; cards;110101196902150059 ; run;,column不要求數(shù)據(jù)項(xiàng)之間分開,所以經(jīng)常用來(lái)輸入緊縮格式的數(shù)據(jù)。 比如,輸入一批身份證號(hào),從中提取生日的年、月、日信息。,data step,input語(yǔ)句-formatted格式,input 指針控制符 變量名 $輸入格式;,說(shuō)明: 適合讀入含有不標(biāo)準(zhǔn)數(shù)據(jù)的文件 formatted 格式中可以: 將輸入指針移到數(shù)據(jù)域的開始位置; 定義變量名; 定義輸入格式,data step,指針控制符: n 表示將輸入指針移動(dòng)到第n列; +n 表示將輸入指針向后移動(dòng)n列。 如: input lname $15. 21 fname +2 sex $1;,data step,練習(xí):用formatted模式讀入文件overseas.dat。創(chuàng)建后的sas數(shù)據(jù)集名為mylib.format。 /* sasprog0611.sas */ data mylib.format; infile d:overseas.dat; input 1 date $9. 10 dest $3. 13 boaeded 3.; run; proc print data=mylib.format; run;,data step,data步中設(shè)定變量屬性的語(yǔ)句:,data step,12234.12,comma8.2,dollar8.2,8.2,12234.12,12234.12,12234.1,12234,12234.1234,data step,sas內(nèi)部該日期等于距離1960年1月1日的天數(shù),20oct97,ddmmyy8,mmddyy8,實(shí)際存儲(chǔ)數(shù)值 13807,20/10/97,10/20/97,20/10/97,data step,變量的屬性: (1)字符型還是數(shù)值型:input在讀入字符型時(shí)在變量后要加$符號(hào)。 (2)變量標(biāo)簽(label):可以給變量加一個(gè)長(zhǎng)度不超過(guò)40個(gè)字符(漢字不超過(guò)20個(gè))的標(biāo)簽,標(biāo)簽可以用在報(bào)表中。 (3)變量存儲(chǔ)長(zhǎng)度(length):數(shù)值數(shù)據(jù)一般長(zhǎng)度為8字節(jié),也可以對(duì)取值較小的數(shù)值規(guī)定較小的長(zhǎng)度以節(jié)省存儲(chǔ)空間;字符型變量的缺省長(zhǎng)度為8字節(jié)。,data step,變量的屬性: (4)變量的輸出格式(format):指定如何顯示變量的值。 (5)變量的輸入格式(informat):指定如何把外部數(shù)據(jù)轉(zhuǎn)換為sas數(shù)據(jù)。 數(shù)據(jù)步中的attrib語(yǔ)句可以指定這些屬性,格式為: attrib 變量名 屬性名=屬性值;,data step,/* sasprog0612.sas */ data sales; attrib name label=“姓名“ length=$10 date label=“日期“ format=yymmdd10. informat=mmddyy10. amount label=“金額“ format=10.2; input name $ 1-10 date amount; cards; 張鵬 10/15/1998 2000 李志明 1/3/99 1500 王敏 11/5/99 3000 ; run; proc print noobs label; run;,可以同時(shí)指定多個(gè)變量的屬性; 可以為一個(gè)變量同時(shí)指定多個(gè)屬性。,加工數(shù)據(jù)集,用set語(yǔ)句復(fù)制數(shù)據(jù)集 /* sasprog0613.sas */ data c9501; set mylib.youth; run;,把mylib.youth復(fù)制為work.c9501 該程序流程也隱含著一個(gè)循環(huán),其中的set語(yǔ)句是讀取觀測(cè)的語(yǔ)句。,加工數(shù)據(jù)集,修改數(shù)據(jù)集 /* sasprog0614.sas */ data c9501; set mylib.youth; if height170 then height=170; run;,原數(shù)據(jù)集中趙大可身高172,修改后為170;,加工數(shù)據(jù)集,使用keep語(yǔ)句指定保留數(shù)據(jù)集中的變量,drop語(yǔ)句指定丟棄數(shù)據(jù)集中的變量。 /* sasprog0615.sas */ data c9501; set mylib.youth; keep name height weight; run;,生成新數(shù)據(jù)集,保留原數(shù)據(jù)集中name、height、weight三個(gè)變量;,加工數(shù)據(jù)集,/* sasprog0616.sas */ data c9501; set mylib.youth; drop age,sex; run;,丟棄age、sex變量,與上例作用相同; 用這種方法可以取得數(shù)據(jù)集的某些列的子集。,加工數(shù)據(jù)集,/* sasprog0617.sas */ data c9501a; set c9501; if height150 and weight50; run;,也可以取得數(shù)據(jù)集的某些行的子集。 身高大于150cm,并且體重大于50kg的觀測(cè)。 這里if語(yǔ)句不同于分支語(yǔ)句,它沒有then部分。用于取出滿足條件的行,形成子集。,加工數(shù)據(jù)集,利用if-then結(jié)合delete篩選數(shù)據(jù)集 /* sasprog0618.sas */ data c9501; set c9501; if height150 then delete; run; 程序執(zhí)行后,身高小于150的記錄均被刪除。,加工數(shù)據(jù)集,在用set語(yǔ)句引入數(shù)據(jù)集時(shí),可以給數(shù)據(jù)集加選項(xiàng),格式為: 數(shù)據(jù)集名(數(shù)據(jù)集選項(xiàng)); 選項(xiàng)包括: keep=:表示引入時(shí)只要指定的變量; drop=:表示不引入指定的變量; obs=:表示讀取觀測(cè)時(shí),讀到指定的序號(hào)為止; fristobs:表示從指定的序號(hào)開始讀起,不讀取序號(hào)之前的觀測(cè)。,加工數(shù)據(jù)集,/* sasprog0619.sas */ data huge; array x(10); do i=1 to 1000000; do j=1 to 10; x(j) = normal(0); end; output; end; drop i j; run; data new; set huge(obs=100 keep=x1 x2); run;,產(chǎn)生一個(gè)10個(gè)變量,1百萬(wàn)個(gè)觀測(cè)的數(shù)據(jù)集work.huge; 從中復(fù)制前100行和兩個(gè)變量,形成新數(shù)據(jù)集work.new。,加工數(shù)據(jù)集,拆分?jǐn)?shù)據(jù)集 /* sasprog0620.sas */ data datam dataf; set mylib.youth; select(sex); when(男) output datam; when(女) output dataf; otherwise put sex=有錯(cuò); end; drop sex; run; proc print data= datam;run; proc print data= dataf;run;,把mylib.youth數(shù)據(jù)集中的男生放到work.datam中,將女生放到work.dataf中。 output是一個(gè)可執(zhí)行語(yǔ)句,它強(qiáng)制當(dāng)前觀測(cè)寫入到語(yǔ)句指定的數(shù)據(jù)集中。,加工數(shù)據(jù)集,縱向合并數(shù)據(jù)集 幾個(gè)結(jié)構(gòu)相同的數(shù)據(jù)集上下地合并在一起; 比如: data classes; set class1 class2 class3 class4; run;,加工數(shù)據(jù)集,加工數(shù)據(jù)集,/* sasprog0621.sas */ data new; set datam(in=male) dataf(in=female); if male=1 then sex=男; if female=1 then sex=女; run;,將前例拆分的男生、女生兩個(gè)數(shù)據(jù)集合并; 為了指示觀測(cè)來(lái)自哪一個(gè)小數(shù)據(jù)集,在set語(yǔ)句數(shù)據(jù)集名后可加一個(gè)小括號(hào),里面加上“in=變量名”,該變量取1時(shí)表示觀測(cè)來(lái)自該數(shù)據(jù)集,取0時(shí)不是來(lái)自該數(shù)據(jù)集。,加工數(shù)據(jù)集,橫向合并數(shù)據(jù)集 兩個(gè)(或多個(gè))數(shù)據(jù)集如果包含了同樣一些觀測(cè)的不同屬性(變量),且各個(gè)數(shù)據(jù)集的觀測(cè)順序是一一對(duì)應(yīng)的,則可以通過(guò)merge語(yǔ)句合并到一個(gè)新數(shù)據(jù)集; 比如: data new; merge c9501u c9501v c9501w; run;,加工數(shù)據(jù)集,如果順序不對(duì)應(yīng),則合并結(jié)果不正確。所以橫向合并一般采取按關(guān)鍵字合并的方法。 即把每個(gè)數(shù)據(jù)集按照相同的、能唯一區(qū)分各個(gè)觀測(cè)的一個(gè)(或幾個(gè))變量排序,然后用by語(yǔ)句和merge語(yǔ)句,使原來(lái)觀測(cè)順序不一致或個(gè)數(shù)不同的數(shù)據(jù)集正確合并。,加工數(shù)據(jù)集,加工數(shù)據(jù)集,/* sasprog0622.sas */ data c9501x; set mylib.youth; keep name sex; run; data c9501y; set mylib.youth; keep name height weight; run; proc sort data=c9501x; by name; run; proc sort data=c9501y; by name; run; data new; merge c9501x c9501y; by name; run; proc print;run;,把mylib.youth拆分為包含name、sex的數(shù)據(jù)集c9591x; 把mylib.youth拆分為包含name、height、weight的數(shù)據(jù)集c9591y; 按關(guān)鍵字橫向合并。 sort是排序過(guò)程。,proc step,sas程序的過(guò)程步表示一個(gè)處理過(guò)程,如排序、t檢驗(yàn)、方差分析等等。 過(guò)程步以關(guān)鍵字proc開始,后面緊跟著過(guò)程名,用以區(qū)分不同的程序步,并以關(guān)鍵字run結(jié)束。,一般格式如下: proc 過(guò)程名 選項(xiàng)列表; (其它語(yǔ)句); (其它語(yǔ)句); run;,proc step,sas程序中涉及的過(guò)程多達(dá)數(shù)百種; 實(shí)現(xiàn)統(tǒng)計(jì)功能時(shí)常用的過(guò)程也有數(shù)十種; 現(xiàn)將最為常用的過(guò)程名稱及其所能實(shí)現(xiàn)的功能列入下表。,proc step,proc step,對(duì)sas文件進(jìn)行操作的datasets過(guò)程: 功能: 將sas文件從一個(gè)庫(kù)中拷入另一個(gè)庫(kù)中; 對(duì)sas文件進(jìn)行重命名; 修復(fù)損壞的sas文件; 刪除sas文件; 列出某一sas庫(kù)中所有的sas文件; 列出一個(gè)sas數(shù)據(jù)集的屬性,如最后修改時(shí)間、數(shù)據(jù)是否壓縮、數(shù)據(jù)是否索引等; 對(duì)sas文件進(jìn)行設(shè)置密碼的操作; 向sas數(shù)據(jù)集添加記錄; 對(duì)sas數(shù)據(jù)集的屬性以及數(shù)據(jù)集內(nèi)變量的屬性進(jìn)行修改; 創(chuàng)建或刪除sas數(shù)據(jù)集的索引; 創(chuàng)建并管理sas數(shù)據(jù)集的核查文件; 創(chuàng)建或刪除sas數(shù)據(jù)集的完整性規(guī)則。,proc step,datasets格式: proc datasets ; age 當(dāng)前文件名 相關(guān)文件名列表; append base=數(shù)據(jù)集名 ; audit 文件名; initiate; change 舊文件名1=新文件名1 ; contents ; copy out=庫(kù)標(biāo)記 ; exclude 文件名 ;(該語(yǔ)句只能在copy語(yǔ)句后出現(xiàn),不能和select語(yǔ)句同時(shí)出現(xiàn)) select 文件名 ;(該語(yǔ)句只能在copy語(yǔ)句后出現(xiàn),不能和exclude語(yǔ)句同時(shí)出現(xiàn)) delete 文件名 ; exchange文件名1=交換文件名1 ; modify 文件名 ; ; repair文件名 ; save文件名 ; run;,proc step,常用功能說(shuō)明: age語(yǔ)句用于批量地重命名文件,按照當(dāng)前文件和相關(guān)文件的排列順序,依次將后一個(gè)文件名重命名給前一個(gè)文件,結(jié)果是最后一個(gè)文件被刪除,當(dāng)前文件名被廢棄。 proc datasets library=daily; age today day1-day7; run; 以上程序?qū)?shù)據(jù)庫(kù)daily中的數(shù)據(jù)集today改名為day1,day1改名為day2,day2改名為day3,原來(lái)的最后一個(gè)文件名day7被丟棄。,proc step,常用功能說(shuō)明: append語(yǔ)句執(zhí)行向數(shù)據(jù)集添加記錄的功能,選項(xiàng)”base=數(shù)據(jù)集名”用以指定要添加記錄的數(shù)據(jù)集,”data=數(shù)據(jù)集名”則指定所要添加的記錄所在的數(shù)據(jù)集,此選項(xiàng)若省略則默認(rèn)為當(dāng)前數(shù)據(jù)集(最近一次操作的數(shù)據(jù)集)。 proc datasets; append base=d1 data=d2 force; run; 以上程序?qū)2中的數(shù)據(jù)縱向合并到d1,如果d2中有d1中不存在的變量,則相應(yīng)數(shù)據(jù)會(huì)被舍棄。,proc step,常用功能說(shuō)明: audit語(yǔ)句用于對(duì)文件的核查,生成核查文件并對(duì)其進(jìn)行管理; change語(yǔ)句以新文件名替換舊文件名; contents語(yǔ)句用于顯示指定數(shù)據(jù)集或當(dāng)前數(shù)據(jù)集的各種屬性; copy語(yǔ)句用于將當(dāng)前庫(kù)中相應(yīng)的文件拷貝到指定的庫(kù)中,選項(xiàng)“out=庫(kù)標(biāo)記”用來(lái)指定文件要拷貝到的目標(biāo)庫(kù);,proc step,常用功能說(shuō)明: delete語(yǔ)句用于刪除指定的文件; exchange語(yǔ)句的功能是將等號(hào)前后兩個(gè)文件的文件名進(jìn)行互換; modify語(yǔ)句用于修改文件各方面的屬性; repair語(yǔ)句用于對(duì)指定的文件(受到過(guò)某種損壞)進(jìn)行修復(fù),使其恢復(fù)到可以使用的狀態(tài); save語(yǔ)句的功能是將其指定的文件保留,當(dāng)前庫(kù)中的其他所有文件則被刪除。,proc step,proc step,對(duì)數(shù)據(jù)文件中記錄進(jìn)行排序的sort過(guò)程: 一般格式: proc sort 選項(xiàng)列表; by 變量名1 ; run; by語(yǔ)句即用以指定排序所要依據(jù)的變量,可為數(shù)值型也可為字符型。 多個(gè)變量時(shí),先按靠前的變量排序,再按照靠后的變量排序。 by語(yǔ)句中每個(gè)變量前可用descending/ascending選項(xiàng)來(lái)指定按照其排序的方式(降序或升序),默認(rèn)狀態(tài)為升序。 proc sort語(yǔ)句后各選項(xiàng)含義及其用法見下表。,proc step,proc step,將數(shù)據(jù)文件輸出顯示的print過(guò)程 功能: 將sas數(shù)據(jù)集的記錄以一定的方式顯示到輸出設(shè)備(顯示屏); 可以顯示其全部的變量或部分變量; 可以創(chuàng)建從簡(jiǎn)單列表到可進(jìn)行數(shù)據(jù)匯總的各種報(bào)告的各種不同的表單。,proc step,print的一般格式 proc print options; by var-1 ; pageby variable; sumby variable ; id variable ; sum variable; var variable; run;,proc step,by語(yǔ)句在所有過(guò)程中的用法都相同,即將數(shù)據(jù)集分割為若干小數(shù)據(jù)集分別進(jìn)行處理。 pageby語(yǔ)句用來(lái)控制換頁(yè)時(shí)變量的顯示方式,對(duì)于其后所指定的變量,相同的值不會(huì)顯示在不同的頁(yè)中,該變量某一值的記錄在一頁(yè)的剩余部分顯示不下時(shí),則從該值的第一條記錄開始換行顯示。 sumby語(yǔ)句的作用和pageby語(yǔ)句相似,只不過(guò)是將換頁(yè)的動(dòng)作換為求和,對(duì)指定變量的每一值計(jì)算var變量的總計(jì)值。 id語(yǔ)句的作用是用指定的變量值代替記錄編號(hào)對(duì)每一條記錄進(jìn)行標(biāo)識(shí)。 sum語(yǔ)句用于指定報(bào)告中要進(jìn)行求和操作的變量。 var語(yǔ)句用于指定要在報(bào)告中顯示的變量。,proc step,過(guò)程步常用語(yǔ)句,var 語(yǔ)句 var 語(yǔ)句在很多過(guò)程中用來(lái)指定分析變量。 在var 后面給出變量列表: var 變量名1 變量名2 變量名n; 變量名列表可以使用省略的形式,如x1-x3。 例如: var math chinese;,過(guò)程步常用語(yǔ)句,model 語(yǔ)句 model語(yǔ)句在一些統(tǒng)計(jì)建模過(guò)程中用來(lái)指定模型的形式。其一般形式為 model 因變量 自變量表 / 選項(xiàng); 比如 model math=chinese; 即用語(yǔ)文成績(jī)預(yù)測(cè)數(shù)學(xué)成績(jī)。,過(guò)程步常用語(yǔ)句,by語(yǔ)句 一般用來(lái)指定一個(gè)或幾個(gè)分組變量,根據(jù)這些分組變量值把觀測(cè)分組,然后對(duì)每一組觀測(cè)分別進(jìn)行本過(guò)程指定的分析。 在使用帶有by語(yǔ)句的過(guò)程步之前一般先用sort過(guò)程對(duì)數(shù)據(jù)集排序。 比如,假設(shè)我們已經(jīng)把c9501數(shù)據(jù)集按性別排序,則下列print 過(guò)程可以把男、女生分別列出: proc print data=c9501; by sex; run;,過(guò)程步常用語(yǔ)句,class語(yǔ)句 在一些過(guò)程(如方差分析)中,使用class語(yǔ)句指定一個(gè)或幾個(gè)分類變量,它實(shí)際相當(dāng)于因變量。 而在另一些過(guò)程(如means)中,class語(yǔ)句作用與by語(yǔ)句類似,可以指定分類變量,把觀測(cè)按分類變量分類后分別進(jìn)行分析。 使用class時(shí)不需要先按分類變量排序。,過(guò)程步常用語(yǔ)句,output語(yǔ)句 在過(guò)程步中經(jīng)常用output語(yǔ)句指定輸出結(jié)果存放的數(shù)據(jù)集。 不同過(guò)程中把輸出結(jié)果存入數(shù)據(jù)集的方法各有不同,output語(yǔ)句是用得最多的一種,其一般格式為: output out輸出數(shù)據(jù)集名 關(guān)鍵字變量名 關(guān)鍵字變量名 ; 其中用out給出了要生成的結(jié)果數(shù)據(jù)集的名字,用“關(guān)鍵
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 歌廳轉(zhuǎn)讓協(xié)議書范本
- 商務(wù)演出服務(wù)合同協(xié)議
- 正規(guī)租用合同協(xié)議模板
- 模板租賃銷售合同協(xié)議
- 員工社保補(bǔ)償合同協(xié)議
- 2025注冊(cè)會(huì)計(jì)師聘用合同范本
- 2025規(guī)范版本的學(xué)校食堂餐飲服務(wù)合同
- 模具承攬合同協(xié)議格式
- 正規(guī)底商出租合同協(xié)議
- 商業(yè)用地分租合同協(xié)議
- 《風(fēng)險(xiǎn)管理理論》課件
- 防汛行政首長(zhǎng)培訓(xùn)課件
- FBS-GC-001-分布式光伏施工日志
- 《裝備質(zhì)量問題歸零實(shí)施指南》
- 人衛(wèi)版肺部疾病教學(xué)課件
- 外籍人員個(gè)人所得稅講義課件
- LED制程與工藝介紹
- 《馬克思主義中國(guó)化思想通史》導(dǎo)讀-南京林業(yè)大學(xué)中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- 北京中考語(yǔ)文詞語(yǔ)表
- 水資源利用智慧樹知到答案章節(jié)測(cè)試2023年西安理工大學(xué)
- 水質(zhì)對(duì)干豆腐品質(zhì)的影響機(jī)制及調(diào)控技術(shù)
評(píng)論
0/150
提交評(píng)論