【正文】
=大秦鐵 */ proc print。 proc print。 例中, NMIS為變量 SECTOR非缺失值的觀測(cè)個(gè)數(shù),即按 SECTOR分好類(lèi)股票的個(gè)數(shù)。 語(yǔ)句格式 LOSTCARD。 run。 只有第 3和第 5個(gè)觀測(cè)是完整的觀測(cè) 。 批處理方式和非交互方式下: ? 立即停止處理; ? 在 LOG窗口顯示錯(cuò)誤信息 ,說(shuō)明由 ABORT語(yǔ)句的RETURN選項(xiàng)終程序執(zhí)行; ? 不執(zhí)行任何相繼的語(yǔ)句或檢查句法; ? 用一個(gè)條件碼指示有錯(cuò)誤地控制返回到主機(jī)系統(tǒng)。 Stkcd=000007 Lstknm=深達(dá)聲 A Lstdt=19920413 …… NOTE: SAS 系統(tǒng)由于錯(cuò)誤而停止了該步的處理。 ?WHERE語(yǔ)句不是可執(zhí)行語(yǔ)句 , 它起不到 IFTHEN語(yǔ)句的作用 。 /* 沒(méi)有名子被選上 */ Like 39。 Where x and y。 OUTPUT語(yǔ)句 OUTPUT語(yǔ)句輸出當(dāng)前的觀測(cè)到被創(chuàng)建的數(shù)據(jù)集中。 例中,每一行記錄生成三個(gè)觀測(cè)。 if then output。如果不用 MISSING語(yǔ)句,當(dāng)讀入數(shù)值變量的缺失值時(shí)(這里為 X和 I), 就要產(chǎn)生錯(cuò)誤。 299 run。 ? 一個(gè)分號(hào) ( ; ) 表示 CARDS( 或 DATALINES) 語(yǔ)句后數(shù)據(jù)行的結(jié)束 。) 中包含一個(gè)分號(hào)。 316 if type=39。type and age dont macth39。 BY DESCENDING variable1 ...DESCENDING variablen。 by year qtr month。 IDLABEL variable。 run。 by location date。 drop s1s7。 title2 39。 filename f2 39。 run。 缺 省時(shí) I N D E X = Y E S有效的成員類(lèi)型( MEMTYPE): A L L 所有成員,缺省值A(chǔ) C C E S S S A S / A C C E S S 軟件創(chuàng)建的存取文件C A T A L O G 目錄D A T A 數(shù)據(jù)集P R O G R A M 程序V I E W 視圖應(yīng)用舉例 例 兩個(gè) SAS邏輯庫(kù)之間復(fù)制數(shù)據(jù)集和目錄冊(cè)。 select dat: (alter=zsw)。 EXCLUDE SASfile(s) / MEMTYPE=mtype。 log= 39。 /*直接輸出到永久文件中 */ filename f1 39。 run。 do Time=1 to 7。 結(jié)果顯示: O bs S e x _N A M E _ F M1 F A ge 15 .2 F H e i gh t 66 . 5 .3 F W e i gh t 112 .4 M A ge . 155 M H e i gh t . 66 . 56 M W e i gh t . 112例 對(duì)每個(gè) BY組轉(zhuǎn)置。 應(yīng)用舉例 例 ID變量的值為轉(zhuǎn)置后數(shù)據(jù)集的變量名。 轉(zhuǎn)置過(guò)程句法 PROC TRANSPOSE DATA=inputdataset LABEL=label LET NAME=name OUT=outputdataset PREFIX=prefix。 year=year(date)。 本章將介紹的數(shù)據(jù)管理過(guò)程: ? 數(shù)據(jù)集排序; ? 數(shù)據(jù)集轉(zhuǎn)置; ? 改變輸出地點(diǎn); ? 添加觀測(cè); ? 數(shù)據(jù)庫(kù)復(fù)制 。teen39。 cards。 run。 /*將 100賦給宏變量 beta */ run。 292 if x0 then list。 input Id $4. Foodpr1 Foodpr2 Foodpr3 Coffeem1 Coffeem2。 by stktype。 cards。 set 。 where same and year(date)2020。 例 設(shè)有名字 Diana, Diane, Dianna, Dianthus, Dyan. 使用LIKE算符來(lái)選擇第一個(gè)字符為 D的名字時(shí), LIKE算符的不同選擇模式與結(jié)果如下 : Like 39。 run。 set 。但是,當(dāng)新創(chuàng)建數(shù)據(jù)集和已存在的 SAS數(shù)據(jù)集同名時(shí),不能覆蓋已存在的數(shù)據(jù)集。每個(gè)觀測(cè)包含 3個(gè)數(shù)據(jù)行 39。 301 32 301 61432 302 53 302 83171 400 92845 411 46 411 99551 。 例中,刪除數(shù)據(jù)集 A中的所有觀測(cè)值,即清空數(shù)據(jù)集 A。 set 。 選項(xiàng)說(shuō)明: v a r i a b l e 規(guī)定累加變量e x p r e s s i o n 有效的 S A S 表達(dá)式應(yīng)用準(zhǔn)則: ? 累加變量的觀測(cè)被讀入之前 , 值為 0; ? 表達(dá)式的計(jì)算結(jié)果為缺失值時(shí) , 取 0代替; ? 表達(dá)式可以使用比較算符; ? 語(yǔ)句 A+(B)中的 ( +) 是必須的 , 不能寫(xiě)成 AB。 lstknm=39。 將表達(dá)式結(jié)果賦予一個(gè)變量。 run。深發(fā)展 39。 retain s_h 0。 if Stktype=’B’ then delete。 if id ne idc then do。 例 每個(gè)觀測(cè)包含 3個(gè)數(shù)據(jù)行 data a。 set 。 set 。 NOTE: “DATA 語(yǔ)句 ” 所用時(shí)間(總處理時(shí)間) : 實(shí)際時(shí)間 秒 CPU 時(shí)間 秒 例 ABORT語(yǔ)句防止輸入無(wú)效數(shù)據(jù)時(shí)出錯(cuò)。 Where hstocd between 600000 and 600899。D_an%39。 字符變量 C不能單獨(dú)地作為邏輯表達(dá)式 例 選擇一定范圍內(nèi)的觀測(cè) Where x between 1 and 5。 drop score1 score3。 run。數(shù)據(jù)處理時(shí)用這個(gè)語(yǔ)句會(huì)很省力。 input x y。text139。 if x=. Then goto find。 input name $ type $ age 。 age=。 Wu teen 20 Li teen 12 Cindy adult 28 。 BY語(yǔ)句 BY DESCENDINGvariable1… DESCENDINGvariablen。 by descending clpr。 BY 組內(nèi)最后一個(gè) ID 值的觀測(cè)被轉(zhuǎn)置VAR語(yǔ)句和 ID語(yǔ)句 VAR語(yǔ)句 VAR variablelist。 proc print。 run。 title2 39。 PRINTTO過(guò)程有以下功能: ? 改變過(guò)程輸出的目的地; ? 改變 SAS日志輸出的目的地; ? 有選擇地限制 SAS輸出; ? 將輸出結(jié)果存放在永久文件中; ? 將輸出直接送到打印機(jī)上; ? 將 SAS的輸出作為輸入數(shù)據(jù) ( 這時(shí)需要一些附加的程序語(yǔ)句 ) 。 /*直接輸出到永久文件中 */ 例 直接打印輸出結(jié)果 。 proc append base=data1 data=data2(where=(X=1))。 run。 data (alter=zsw)。 proc append base=a data= (where=(year(date)=1999)) 。 proc printto print=f。 選項(xiàng)說(shuō)明 注意:一般情況下 , PROC PRINTTO后面一定要加 RUN語(yǔ)句 。 run。 options nodate pageno=1 linesize=80 pagesize=40。 結(jié)果顯示: O b s _ N A M E _ F M1 A g e 15 152 H e i g h t 6 6 . 5 6 6 . 53 W e i g h t 112 112proc transpose data= out=a let。 沒(méi)有 VAR語(yǔ)句時(shí),則沒(méi)有列在其它語(yǔ)句里的所有數(shù)值變量被轉(zhuǎn)置。 var date clpr。 BY語(yǔ)句中規(guī)定多個(gè)變量時(shí) , SORT過(guò)程首先按第一個(gè)變量排序, 然后是第二個(gè)變量等 。 上面程序與前一頁(yè)程序結(jié)果相同。 type and age dont macthage=20 RULE: +1+2+3+4+5+6+7+8 318 Wu teen 20 name=Wu type=teen age=20 _ERROR_=1 _N_=1 NOTE: 數(shù)據(jù)集 有 3 個(gè)觀測(cè)和 3 個(gè)變量。teen39。 find : 。march39。 cards。 讀入含有缺失值的數(shù)據(jù)源時(shí),必須用 MISSING語(yǔ)句,否則可能產(chǎn)生讀入錯(cuò)誤。數(shù)據(jù)集 Astk包含變量 Stktype=’A’’的所有觀測(cè);數(shù)據(jù)集 Bstk包含變量 Stktype=’B的所有觀測(cè)。 output。 例 不能用 WHERE語(yǔ)句的情況 data a。 [其它 SAS語(yǔ)句 ] WHERE SAME AND condition 2 [其它 SAS語(yǔ)句 ] WEHERE SAME AND conditionn。 Where taxes not between salary* and salary*。 input ssn pay 。 run。 proc print。 if id1 ne id2 or id2 ne id3 then lostcard。數(shù)據(jù)行錯(cuò)誤 39。 例中,刪除數(shù)據(jù)集 RESDAT中 Stktype=’B’的觀測(cè)值。 上面兩段程序等價(jià) Obs Name