【正文】
FIRSTOBS=recordnumber 規(guī)定從該記錄行開始讀入 MISSOVER 阻止 INPUT語句從下一個數(shù)據(jù)行讀入數(shù)據(jù),未賦值的變量設(shè)為缺失。 讀入時去掉數(shù)據(jù)的引號。 設(shè)定缺省分隔符為逗號。下面只介紹幾個 INFILE獨(dú)有的選項(xiàng)。 CARDS|CARDS4|DATALINES|DATALINES4選項(xiàng)指明輸入數(shù)據(jù)為 CARDS( CARDS4, DATALINES, DATALINES4) 后面的數(shù)據(jù)流,而非來自外部數(shù)據(jù)文件。 語句格式 INFILE filespecification optionlist hostoptionlist。 INFILE語句 INFILE語句用來定義一個外部數(shù)據(jù)文件,文件中的數(shù)據(jù)用 INPUT語句讀取。 run。 file “D:\” 。39。 c=39。 b=39。 a=39。 data。 run。hello39。d:\39。 filename=xxx。 file 39。 /* 數(shù)據(jù)集 a中有一個變量 name和一個觀測值print */ run。hello39。 file print filename=xxx。 FILEVAR=variable 定義一個變量, FILE語句根據(jù)其值的變化關(guān)閉和打開輸出文件。 DSD 規(guī)定一個數(shù)據(jù)可以包含分隔符,要用引號括住。 FLOWOVER 規(guī)定當(dāng)輸出數(shù)據(jù)行的長度超過規(guī)定值時,超出部分在下一行輸出。缺省情況下為空格。stringinquotationmarks39。 語句格式 FILE filespecification options hostoptions。 同一個 DATA步可以用多個 FILE語句 。 FILE語句 FILE 語句用于規(guī)定將要輸出的外部文件 。 If id。 Data Iissulst1。 Cards。 Data stkcd。 例中,匹配合并必須有 BY語句。 by date。 例 匹配合并 data a。 run。 選項(xiàng)說明 D a t a S e t N a me 規(guī)定要合并的數(shù)據(jù)集D a t a S e t O p t i o n s 規(guī) 定 對 數(shù) 據(jù) 集 的 操 作 , 用 到 的 語 句有 k e e p , D r o p 和 r e n a me .E n d = V a r i a b l e _ N a me 規(guī) 定 一 個 臨 時 變 量 , 作 為 文 件 結(jié) 束的標(biāo)識 應(yīng)用舉例 例 一對一合并 data a。 SAS系統(tǒng)合并觀測的方式依賴于 BY語句的使用。 run。 data a。 run。 data qttn。 run。 set 。 run。 set 。 run。 set 。 run。 data oppr(keep=date oppr) clpr(keep=date clpr)。 上述三段程序的結(jié)果相同 。 keep date clpr。 data c。 set 。 run。 保留部分變量: data a 。 run。 /*將臨時變量 lastobs的值賦給 X*/ put 39。 if lastobs。 輸出數(shù)據(jù)集的最后一個觀測值: data a。 if obs_last=1。 找數(shù)據(jù)集最后一個觀測值更簡單的方法: data a。 if _N_=NOBS。 如何找數(shù)據(jù)集的最后一個觀測值: data a。 if _n_=a。 a=nobs。 run。 end。 /*臨時變量為 last */ set point=obsnum nobs=last。 數(shù)據(jù)集 a: x y Z in1 in2 1 Groucho 1 0 3 Harpo 1 0 5 Kart 1 0 2 Chico 0 1 4 Zeppo 0 1 規(guī)定臨時變量選項(xiàng) NOBS=: data a。 in2=two。 set one(in=one) two(in=two)。 例 數(shù)據(jù)集選項(xiàng) in=var。 /*使用選項(xiàng) point=時,經(jīng)常要用 stop語句來終止 data步的執(zhí)行 */ proc print。 end。 /*讀入數(shù)據(jù)集 a中的第 3,5,7,4觀測 */ if _error_=1 then abort。 do n=3,5,7,4。 obs=_n_。 規(guī)定臨時變量選項(xiàng) Point=: data a。文件結(jié)束時取值 1,其它觀測取 0。 Point=Variable_Name 規(guī)定一個臨時變量控制 SET語句讀入的觀測序號 NOBS=Variable_Name 規(guī)定一個臨時變量,記錄讀入數(shù)據(jù)集的觀測總數(shù)。 一個 DATA步中可以有多個 SET語句,一個 SET語句中可以有任個 SAS數(shù)據(jù)集。 SET語句 SET語句從一個或多個已存在的 SAS數(shù)據(jù)集中讀取觀測值,并將這些觀測組合在一個數(shù)據(jù)集中。 if 。 set a。 by year month。 year=year(date)。 set 。 例 保留各 BY組的最后一個觀測值。 選項(xiàng)說明 BY語句 概念 V a r i a b l e 規(guī)定分類排序或加索引的變量D e s c e n d i n g 規(guī)定按降序排序,缺省為按升序排G r o u p f o r ma t 規(guī)定用格式化值分組N o t s o r t e d 未排序BY 變量 BY 語句規(guī)定的變量BY 值 BY 變量的值或格式化值BY 組 同一 BY 值所有觀測構(gòu)成的組 SAS 系 統(tǒng)對每個 BY 組創(chuàng)建 兩個自動變 量: 和 , 用來標(biāo)識每個 BY組的第一個和最后一個觀測 。用于控制SET,MERGE,UPDATE或 MODIFY語句的操作。 69 run。 GU BEIJING J 125 ROBERT US C 233 NOTE: 數(shù)據(jù)集 有 2 個觀測和 4 個變量。 64 put name 20 bldg $ a $ room。 63 a=39。 62 input name amp。 但第一種方法的效果好。 GU BEIJING J 125 ROBERT US C 233 。 put name 20 bldg $ a $ room。 a=39。 input name amp。 60 run。 GU BEIJING J125 ROBERT US C233 NOTE: 數(shù)據(jù)集 有 2 個觀測和 3 個變量。 /*變量 name有空格 */ 55 put name 20 (bldg room) ($1., 3.)。 54 input name amp。 run。 /*從第 20列開始輸出第二、三個變量 */ cards。 $10. bldg $ room。 data a。 PUT pointercontrol (variablelist) (formatlist) | 。 LOG窗口輸出結(jié)果: 134, 18, 3, 格式化輸出 語句格式: PUT variable $ startcolumn endcolumn.decimalplaces | 。 put (_all_) (3*)。 x2=。 data a。 修飾符說明: ? n*規(guī)定后面格式重復(fù) n次 。 | 。 PUT pointercontrol n* 39。 run。 b=300。 data a。 LOG窗口輸出結(jié)果: Example of overprint 列方式輸出 語句格式: PUT variable $ startcolumn endcolumn.decimalplaces | 。39。Example of overprint39。 Alice F Barbara F Carol F Jane F Ja F Joyce F Judy F Louise F Mary F This is the last of F Alfred M Henry M James M Jeffrey M John M Philip M Robert M Ronald M Thomas M William M This is the last of M 第一頁 第二頁 輸出窗口顯示: data。 sex $ _page_。 if then put // 39。*向結(jié)果窗口輸出 。 by sex。 data _null_。 run。 /*輸出最新的數(shù)據(jù)行到 SAS Log窗口 */ cards。 input x y z。 /* 在 log窗口輸出 100個 1*/ run。 /*在 log窗口輸出 132個下