2016-12-27 21 views
0

missover語句下面我有數據集使用在SAS

data ab; 
infile cards missover; 
input m p c; 
cards; 
1,2,3 
4,5, 
6,7, 
run; 

此查詢的輸出

m p c 
. . . 
. . . 
. . . 

爲什麼我得到下面的輸出,而不是錯誤的? 我還沒有指定任何分隔符。 請解釋。

由於事先 Nikhila

回答

0

你得到無效數據消息。 SAS缺省爲空格分隔的字段,您需要指定DSD INFILE語句選項或DLM =','。您實際上並不需要MISSOVER,因爲您有三個用逗號分隔的字段的正確數量的分隔符,但我可能會繼續並保留它。

24   data ab; 
25   infile cards missover; 
26   input m p c; 
27   cards; 

NOTE: Invalid data for m in line 28 1-5. 
RULE:  ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0      
28   1,2,3 
m=. p=. c=. _ERROR_=1 _N_=1 
NOTE: Invalid data for m in line 29 1-4. 
29   4,5, 
m=. p=. c=. _ERROR_=1 _N_=2 
NOTE: Invalid data for m in line 30 1-4. 
30   6,7, 
m=. p=. c=. _ERROR_=1 _N_=3 
NOTE: The data set WORK.AB has 3 observations and 3 variables. 




24   data ab; 
25   infile cards dsd missover; 
26   input m p c; 
27   cards; 

NOTE: The data set WORK.AB has 3 observations and 3 variables. 
0

該MISSOVER是什麼讓你有三個意見,而不是一個。如果沒有MISSOVER,那麼SAS將嘗試將每行讀取爲一個值,並且最終只能觀察到所有缺失值。如果將變量更改爲字符而不是數字,則會更容易,因爲您可以看到值的最終位置。

data ab; 
infile cards missover; 
input m $ p $ c $; 
put (m p c) (=); 
cards; 
1,2,3 
4,5, 
6,7, 
; 

m=1,2,3 p= c= 
m=4,5, p= c= 
m=6,7, p= c= 

data ab; 
infile cards /*missover */; 
input m $ p $ c $; 
put (m p c) (=); 
cards; 
1,2,3 
4,5, 
6,7, 
; 

m=1,2,3 p=4,5, c=6,7, 
NOTE: SAS went to a new line when INPUT statement reached past the end of a line.