2012-05-22 143 views
1
26/03/2012~19:45:58~1~1636~00000000000000000000~41.45~17~16; 
28/03/2012~19:45:58~1~1636~00000000000000000000~41.45~17~6; 
29/03/2012~19:45:58~1~1636~00000000000000000000~41.45~17~1; 
23/03/2012~19:45:58~1~1636~00000000000000000000~41.45~17~4; 
25/03/2012~19:45:58~1~1636~00000000000000000000~41.45~17~9; 
27/03/2012~19:45:58~1~1636~00000000000000000000~41.45~17~880; 

我有這些數據可供閱讀。雖然很明顯,分隔符是「〜」,但由於「;」的原因,我有一個問題要閱讀觀察的最後一列。包含多個分隔符的SAS讀取數據

我怎樣才能讓SAS讀取16,6,1,4,9,880而不是「;」 ? 謝謝

回答

6

只需指定';'在分隔符語句中,連同'〜'

data test; 
infile "/path/to/file" delimiter='~;'; 
input var1 $ var2 $ var3-var7 var8; 
run; 
+0

剛剛輝煌。謝謝你Robbie Liu – afiqjohari

+0

很好的解決方案。我從來沒有在文檔中看到過這個引用。 – DavB

2

你可以閱讀';'然後剝離出來使用壓縮功能:

a=compress(b,";"); 

你可能會想一個數字:

a=input(compress(b,";"),best.); 

如果我這樣做,我可能會使用INFILE變量有掃描功能沿:

data mydata; 
    infile "/path/to/my/file"; 
    input; 
    rogue_var=scan(_infile_,-1,"~;"); 
    rogue_var_num=input(scan(_infile_,-1,"~;"),best.); 
run; 

請注意,「-1」作爲掃描功能的第二個參數意味着我們從行尾讀取第一個字。

+0

您提供了一個很好的解決方案,謝謝。 – afiqjohari

相關問題