2014-12-22 32 views
2

我想讀這個固定寬度的數據到SAS:閱讀固定寬度的文件 - 空間是公認的

John Garcia  114 Maple Ave. 
Sylvia Chung 1302 Washington Drive 
Martha Newton 45 S.E. 14th St. 

我用這個代碼:

libname mysas 'c:\users\LELopez243\mysas'; 
filename address 'c:\users\LELopez243\mysas\address.dat'; 
data mysas.address2; 
infile address; 
input Name $ 1-15 Number 16-19 Street $ 22-37; 
run; 
proc print data=mysas.address2; 
run; 

得到這個結果:

Obs Name   Number Street 
1 John Garcia  114  Sylvia Chung 1 
2 Martha Newton 45 

如果我編輯.dat文件並在每行的末尾手動添加空格,直到它們的長度相同,代碼將起作用。考慮到不同線長的代碼的任何想法(無手動輸入空格)。

+0

那麼它不應該給你錯誤的結果,不知道爲什麼會這樣。我執行了相同的代碼,但在datalines語句下,得到了正確的結果。 – NEOmen

+1

嘗試將trunco​​ver選項添加到infile語句的末尾。 – Reeza

+0

@Reese ..好吧不是缺少列的情況下,我想知道'trunco​​ver'將如何幫助在這裏 – NEOmen

回答

2

將trunco​​ver選項添加到您的infile語句中。

當輸入數據記錄比INPUT語句期望的短時,Trunco​​ver將覆蓋INPUT語句的缺省行爲。默認情況下,INPUT語句自動讀取下一個輸入數據記錄。當某些記錄比INPUT語句期望的短時,TRUNCOVER使您可以讀取可變長度記錄。沒有賦值的變量被設置爲缺失。

http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000146932.htm

libname mysas 'c:\users\LELopez243\mysas'; 
filename address 'c:\users\LELopez243\mysas\address.dat'; 
data mysas.address2; 
infile address truncover; 
input Name $ 1-15 Number 16-19 Street $ 22-37; 
run; 
proc print data=mysas.address2; 
run;