SAS學習筆記8

infile指令使用總結 一、FIRSTOBS和OBS指令,FIRSTOBS用於指定讀入數據的起始行;OBS用於指定讀入數據的終止行。如 infile 'c:\temp.txt' FIRSTOBS=2 OBS=100; 二、FLOWOVER/MISSOVER/TRUNCOVER/STOPOVER 指令,該指令都用於讀取記錄末尾不完整的數據時使用,FLOWOVER是默認選項。看下面的幾個例子sas的help也有這個例子 外部文件d:\test.log的數據爲 1 22 333 4444 55555 分別用上面指令 data num;    infile 'd:\test.log' FLOWOVER ;    input temp 5.;   RUN; 1        22 2      4444 3     55555 結果爲,讀取時第一條不知足長度5,移到下一行數據22讀取數據(這是這行數據事實上被讀入),指針天然移到第三行不知足,移到下一行數據4444讀取數據(這是這行數據事實上被讀入),指針移到第5行讀取55555。  -------------- data num;    infile 'd:\test.log' missover ;    input temp 5.;   proc print; RUN;  結果 1 . 2 . 3 . 4 . 5 55555 結果爲,讀取時第一條至第4條不知足長度5,寫入默認值.,第五條知足讀入。 ---------------- data num;    infile 'd:\test.log' truncover ;    input temp 5.;   proc print; RUN;  結果 1 1 2 22 3 333 4 4444 5 55555 結果爲,讀取時第一條至第4條不知足長度5,可是將數據讀入。 ---------------- data num;    infile 'd:\test.log' stopover ;    input temp 5.;   proc print; RUN; 結果會出現錯誤,第一行不符合條件,就中止讀入。事實上若是test.log第一行改成一個知足條件的數據77777,讀取到第二行時因爲不知足條件,sas就會中止讀入。 結果是:若是數據集num已經存在,則除了在LOG窗口中輸出錯誤信息外不產生任何動做,若是num不存在,則會建立一個test數據集,可是隻有已經讀取的第一條記錄77777。 三、dsd(delimiter-sensitive data)指令,指定分隔符,默認爲逗號(用delimiter='str'來指定分隔符)。該指令能夠將分隔符之間的數據做爲一個獨立的數據項進行分隔,可是會忽略引號內的分隔符,也就是將引號內的數據做爲一個總體來看。 data scores;    infile datalines dsd;    input Name : $9. Score          Team  : $25. Div $;    datalines; Joseph,76,"Red Racers, Washington",AAA Mitchel,82,"Blue Bunnies, Richmond",AAA Sue Ellen,74,"Green Gazelles, Atlanta",AA ; proc print; run; 結果 1 Joseph    76 Red Racers, Washington  AAA  2 Mitchel   82 Blue Bunnies, Richmond  AAA 3 Sue Ellen 74 Green Gazelles, Atlanta AA 結果team變量裏的Red Racers, Washington因爲用引號包裹,做爲一個總體讀入,儘管中間有分隔符「,」。 --------------- data nums;     infile datalines dsd delimiter='ab';     input X Y Z;     datalines; 1aa2ab3 4b5bab6 7a8b9 ; 結果 1 1 . 2 2 4 5 . 3 7 8 9 結果是用a或者b來分割的,這個很重要 四、LINESIZE指令,指明讀入記錄的長度,最大爲32767,默認爲256。用於輸入數據文件數據行大於 256時,防止超過長度的數據丟失。 infile datalines dsd ls=1024;
相關文章
相關標籤/搜索