2017-07-25 49 views
0

我寫了這段代碼片段來加載SAS中的數據集。SAS instream上傳輸入語句:字符串截斷

data eser7.ateneo; 
infile datalines missover; 
input FAC $ AA0506 AA0607 AA0708; 
datalines; 
Architettura 200 200 200 
Economia 680 680 680 
Giurisprudenza - 350 400 
Ingegneria 470 470 600 
Lettere - - 150 
SMFN - - 180 
ScPolitiche - 300 300 
; 
run; 

proc print data = eser7.ateneo; 
run; 

在結果查看器中,我注意到第一個變量FAC被截斷了字符串。我無法解決它爲FAC列設置固定大小,所以這是適合長度的最佳方法嗎?
謝謝

回答

1

SAS列具有固定大小。您需要設置最長可能的大小(通常通過LENGTH聲明,或者使用輸入信息),以便告訴SAS需要爲該列預留多少空間。

data eser7.ateneo; 
infile datalines missover; 
length FAC $20; 
input FAC $ AA0506 AA0607 AA0708; 
datalines; 
Architettura 200 200 200 
Economia 680 680 680 
Giurisprudenza - 350 400 
Ingegneria 470 470 600 
Lettere - - 150 
SMFN - - 180 
ScPolitiche - 300 300 
; 
run; 

proc print data = eser7.ateneo; 
run; 

如果您無法確定正確的最大尺寸與最大尺寸($ 32767),然後要麼使用壓縮(options compress=YES;options compress=CHAR;)或輸入後讀它你可以做什麼分析數據集並將長度修改爲較短的尺寸。但是你不能有每行的長度;壓縮確實會以一定的速度爲您提供接近VARCHAR功能的東西(但仍需要設置最大大小)。

+0

清楚有用的解釋。謝謝 –