2013-10-04 17 views
6

我在閱讀期間'。'作爲字符變量的值,但它將其讀取爲空白值。在SAS中讀取一個字符值的時間段

data output1; 
input @1 a $1. @2 b $1. @3 c $1.; 
datalines; 
!.. 
1.3 
; 
run; 

Output  Required 
------  -------- 
A B C  A B C 
!   ! . . 
1  3  1 . 3 

請幫助我閱讀這段時間。

回答

11

輸出被使用($ W的資料,請在你的情況了信息,通過$1.在你的代碼要求確定的,所以$1.是首先了信息定義的,可變的lenght定義是這個的副產品)。

使用$ char。所需結果的信息。

data output1; 
input @1 a $char1. @2 b $char1. @3 c $char1.; 
datalines; 
!.. 
1.3 
; 
run; 

從技術文檔:

$ W INFORMAT 的$ W上。信息修剪前導空白並在存儲文本之前對齊值。另外,如果一個字段僅包含空白和單個句點,則$ w​​。將期間轉換爲空白,因爲它將期間解釋爲缺失值。 $ w。信息將字段中的兩個或更多個時段視爲字符數據。

$ CHARw。信息 $ CHARw。信息不會在存儲值之前修剪前導空白和尾隨空白,或者在輸入數據字段中將單個句點轉換爲空白。

+1

這是驚人的!非常感謝 – athresh

0

我不會立即明白爲什麼它不起作用。 但是,如果你不知道爲什麼它不起作用,但只是想要一些東西:將其作爲一個長度爲3美元的變量讀取。然後在下一步;使用substr分割它。

例如,

data output1; 
    length tmp $3; 
    input tmp; 
    datalines; 
     !.. 
     1.3 
    ; 
run; 
data output2 (drop=tmp); 
    length a $1; 
    length b $1; 
    length c $1; 

    set output1; 

    a=substr(tmp,1,1); 
    b=substr(tmp,2,1); 
    c=substr(tmp,3,1); 
run; 
+0

感謝您的意見。但是我需要把它看作一個無法做到的單個角色。 – athresh

相關問題