【SAS BASE】通過DATA步導入數據注意事項(適用於text、ASCII、sequential、flat文件)


  • 從內部導入)Datelines一定是DATA Step的最后一個語句,除非SAS遇到分號,所有datelines后面的語句都被看作是數據:
1 DATA A;
2   INPUT a $ b $ c;
3   datalines;
4    adams F 12 
5    Lincon M 16
6 ;
7 RUN;
  • 從外部導入)Infile語句緊跟在DATA語句后面,但一定要在INPUT語句前面:
1 DATA B;
2     INFILE 'C:\MYRAWDATA\B.dat';
3     INPUT a $ b$ c;
4 RUN;
  • LRECL=option:處理Long records 的辦法,record length指的是每一行數據的包括空格在內的字符數,SAS假定是256,若數據較長,則SAS可能讀不完所有的數據:
1 INFILE 'C:\DATA\b.dat' LRECL=2000;
  • @n:column pointer命令SAS移動到第n列,注意在INPUT語句中一定要放在變量名之前
1 INPUT a $ 1-22 b $ Year @40 acre comma9.;
2                               /*表示在讀入acre數據之前,SAS移動到第40列*/               
  • @'character':即跟在某個特定的單詞或字母(character)后面
1 INPUT @ 'bread:' Dogbreed $;
  • colunm modifier:命令SAS遇到空格就停下來
1 INPUT @'bread:' Dogbreed $;/*輸出:Rottweil(默認長度為8)*/
2 
3 INPUT @'bread:' Dogbreed $20.;/*輸出:Rottweil vet bill*/
4 
5 INPUT @'bread:' Dogbreed :$20.;/*輸出:Rottweil(遇到空格停止)*/
  • 讀入數據小工具(/,#n,@@,@):

    /:令SAS跳到SAS的下一行讀入;
    #n:令SAS跳到SAS的第n行讀入;
    @@:若數據中出現了一行有多個觀測值時,應在INPUT語句最后加上@@;
    @: 命令SAS停留在這里,用戶可通過IF語句判斷這一行到底該不該讀入,若需要,則SAS才會繼續讀入該行的其他變量,若不需要,后面的INPUT語句就不會執行:

 

1 INPUT TYPE $ @;
2 IF TYPE ='surface' THEN DELETE;
3 INPUT NAME $ 9-27 C D;

 

  • MISSOVER:命令SAS如果該行數據讀完了,不要讀下一行數據,剩下的未讀變量全部賦值為缺失值;
    TRUNCOVER:適用於采用column或formatted input 方法,且某些數據行比其他行要短的情形。它命令SAS僅當遇到數據行的末端或者在format or column輸入指定的最后一列時才停止輸入。
    /*MISSOVER與TRUNCOVER的相似與區別*/
    若數據在讀入該變量之前就終止,則MISSOVER與TRUNCOVER都會賦予該變量缺失值;
    若數據在讀入該變量中間就終止(比如定義3-12,到第六列就完了),則MISSOVER會賦予該變量缺失值;TRUNCOVER則會有多少分配多少
  • DLM:指定讀入文件的分隔符。注意,若分隔符是tab,則需要用DLM='09'X(IBM中為'05'X);若分隔符為字符串,則用DLMSTR=option選項。
  • DSD option:功能    
1 默認分隔符是逗號,若不是,用DLM=更改;
2 數據中的引號不讀入;
3 引號內的分隔符不被讀入;
4 連續中兩個連續的分隔符看作是缺失值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM