【正文】
沒有規(guī)定 FORCE,就不能對有索引的數(shù)據(jù)集進行排序和替換 。 排序過程句法 PROC SORT option(s) collatingsequenceoption。 和任何一種編程語言一樣, SAS 系統(tǒng)有一些數(shù)據(jù)管理過程,用于實現(xiàn)常用的中間操作或數(shù)據(jù)轉(zhuǎn)換。 上面程序與前一頁程序結(jié)果相同。 end。 put 39。 if type=39。 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 個觀測和 3 個變量。 age 19 then error 39。 315 input name $ type $ age 。 age=。teen39。 選項說明: 沒有選項 規(guī) 定 _ E R R O R _ 為 1 , 但 沒 有 在L O G 窗口輸出任何信息M e s s a g e 規(guī)定輸出的信息ERROR語句等價于下面一系列語句: ? 賦值語句置 _ERROR_為 1; ? 一個 FILE LOG語句; ? PUT語句規(guī)定一段信息; ? 新的一個 FILE語句重新設置前一個 FILE 語句的設置。上例中的空語句也可以省略,因數(shù)據(jù)行后面第一個語句( PROC PRINT。 proc print。 find : 。 例 空語句表示數(shù)據(jù)行結(jié)束 data a。 SAS系統(tǒng)用一個分號 ( ; ) 或四個分號 ( ;;;; ) 來接受空語句 。, 100)。march39。 選項說明: R o u ti n e 規(guī)定要 調(diào)用 的子程序P a r a m e te r 傳遞給子程序信息的參數(shù)或變量名等例 創(chuàng)建包含 DATA信息的宏變量 data a。 NOTE: “DATA 語句”所用時間(總處理時間) : 實際時間 秒 CPU 時間 秒 298 。 291 input x y。 cards。 語句格式 LIST。 例中, MISSING語句規(guī)定用字符 X和 I表示缺失值。 missing X I。 讀入含有缺失值的數(shù)據(jù)源時,必須用 MISSING語句,否則可能產(chǎn)生讀入錯誤。這樣的方法是不是簡單快捷。 keep stktype num 。 set lstkinfo 。數(shù)據(jù)集 Astk包含變量 Stktype=’A’’的所有觀測;數(shù)據(jù)集 Bstk包含變量 Stktype=’B的所有觀測。 if Stktype=’A’ then output Astk。 run。 output。 output。 沒有選項 將當前觀測輸出到 D A T A 語句中命名的所有數(shù)據(jù)集中d a ta s e t n a m e 規(guī)定輸出當前觀測的數(shù)據(jù)集應用舉例 例 由一個輸入數(shù)據(jù)行創(chuàng)建多個觀測 data A。 例中,不能用 WHERE語句控制 SAS的自動變量。 data a。 例 不能用 WHERE語句的情況 data a。 39。 應用舉例 例 選擇數(shù)值變量非 0和非缺失的觀測值 Where x。 where year(date)1996。 [其它 SAS語句 ] WHERE SAME AND condition 2 [其它 SAS語句 ] WEHERE SAME AND conditionn。D_an%39。D__an_39。 進行比較時, LIKE算符識別大寫和小寫之間的字符。 Where taxes not between salary* and salary*。 語句格式 WHERE whereexpression。 ?使用 WHERE語句時 , 因為 SAS系統(tǒng)只從輸入數(shù)據(jù)集中讀入滿足條件的觀測 , 所以這樣的 SAS程序更有效 。 proc print。 input ssn pay 。該步停止時,共有 4 個觀測和 12 個變量。 Log窗口顯示: ERROR: ABORT 語句在行 51 列 15 終止了執(zhí)行。 data a。 run。 使用 stop語句時, LOG窗口不顯示錯誤信息,當新創(chuàng)建數(shù)據(jù)集和已存在的 SAS數(shù)據(jù)集同名時,能覆蓋已存在的數(shù)據(jù)集。產(chǎn)生的結(jié)果依賴于執(zhí)行的方式。 執(zhí)行 ABORT語句時,創(chuàng)建 ABORT語句執(zhí)行前已處理觀測的數(shù)據(jù)集。 proc print。當遇到 STOP語句時,正被處理的那個觀測沒有添加到 SAS數(shù)據(jù)集上。 第 1個觀測有 2個丟失記錄 , 第 2個觀測有 1個丟失記錄 , 第 4個觀測丟失 2個記錄 。 title 39。 if id1 ne id2 or id2 ne id3 then lostcard。 ? 試圖用該組第二個數(shù)據(jù)行開始并按 INPUT語句規(guī)定的行數(shù)讀數(shù)據(jù)行來創(chuàng)建觀測 。每個觀測包含 2個數(shù)據(jù)行 39。 cards。數(shù)據(jù)行錯誤 39。 例 每個數(shù)據(jù)行都有一個同值的識別變量 data a。 當一個觀測包含幾個數(shù)據(jù)行,且當前觀測缺少其中的一些行時,利用 LOSTCARD語句可以防止 SAS系統(tǒng)從下一個觀測的數(shù)據(jù)行讀數(shù)據(jù)作為當前觀測的一部分。 run。 例中,刪除數(shù)據(jù)集 RESDAT中 Stktype=’B’的觀測值。 例 刪除部分觀測值 data stka。 run。 例 計算非缺失值的觀測個數(shù) data a(keep=nmis)。 上面兩段程序等價 Obs Name Height s_h 1 Alice 2 Barbara 3 Carol 4 Jane 5 Ja 6 Joyce 7 Judy 8 Louise 9 Mary …… …… 應用舉例 例 表達式 SUMX+X*X把 X*X的結(jié)果加到 SUMX上 data a (keep=date uss)。 set 。 s_h+height。 累加語句累加表達式結(jié)果。大秦鐵路 39。 length lstknm $12。大秦鐵路 39。 例 第一掃描結(jié)果的長度不是所有數(shù)據(jù)中的最大長度時會出錯 data a。 /* 規(guī)定新變量 x, 它是 a和 b的和 */ t(2)=sum(of x1x5)。 last_s=。 by sex。 賦值語句 語句格式: variable=expression。 利用修改與選擇觀測語句,可以進行數(shù)值計算、數(shù)據(jù)集修改、觀測子集選擇及輸出控制等。 set 。 first_s=。 x=a+b。 結(jié)果變量長度 結(jié)果變量的長度是第一次掃描結(jié)果的長度,除非事先由 LENGTH語句規(guī)定好結(jié)果變量的長度。 /*第一掃描結(jié)果的長度為 4 */ lstknm =39。 Obs lstknm 1 大秦鐵 例 用 LENGTH語句得到正確輸出結(jié)果 data a。 lstknm =39。 Obs lstknm 1 大秦鐵 路 累加語句 語句格式: Variable+expression。 set 。 data b (keep=name height s_h)。 run。 /*USS為變量 Dret的平方和 */ run。 39。 語句格式: DELETE。 run。 delete。 LOSTCARD語句 LOSTCARD語句用于重新對準輸入數(shù)據(jù) 。 適合使用 LOSTCARD語句的情況有: ?每個觀測有固定的輸入數(shù)據(jù)行; ?同一個觀測的每個數(shù)據(jù)行都有一個同值的識別變量。 put 39。 end。 title2 39。 ? 不輸出觀測到數(shù)據(jù)集 , 丟棄開始讀入本組的數(shù)據(jù)行 ,返回到 DATA步開頭 。 input id1 x $ 2 id2 y $ 3 id3 z $。 proc print。 每個觀測包含 3個數(shù)據(jù)行 Obs id1 x id2 y id3 z 1 103 C 103 C 103 C 2 105 E 105 E 105 E 例中 , DATA步讀 3個數(shù)據(jù)行作為 1個觀測 。 STOP語句 STOP語句停止處理 DATA步。 if _n_=5 then stop。 ABORT語句 ABORT語句中止執(zhí)行當前的 DATA步,繼續(xù)執(zhí)行下一個 DATA或PROC步。 RETURN選項說明 立即使當前的 SAS作業(yè)或會話正常結(jié)束。 例 顯示管理方式下使用 stop語句與 abort的區(qū)別。 if _n_=5 then stop。 NOTE: “DATA 語句 ” 所用時間(總處理時間) : 實際時間 秒 CPU 時間 秒 使用 abort語句時, LOG窗口顯示錯誤信息,當新創(chuàng)建數(shù)據(jù)集和已存在的