2014-12-22 1 views
2

내가 SAS에이 고정 폭 데이터를 읽기 위해 노력하고 인식됩니다있어이 결과읽기 폭 파일을 고정 - 공간

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 
John Garcia  114 Maple Ave. 
Sylvia Chung 1302 Washington Drive 
Martha Newton 45 S.E. 14th St. 

나는이 코드를 사용을

.dat 파일을 편집하고 각 줄의 끝에 공백을 수동으로 추가하면 코드 길이가 같아집니다. 라인 길이가 다른 점을 고려한 코드 아이디어 (수동으로 공백을 입력하지 않아도 됨).

+0

음이 당신에게 잘못된 결과를 제공하지 말았어야, 이런 일이 왜 확실하지 않다. 같은 코드를 실행했지만 datalines 문 아래에서 올바른 결과를 얻었습니다. – NEOmen

+1

infun 문의 끝 부분에 truncover 옵션을 추가하십시오. – Reeza

+0

@Reese .. 어쩌면 누락 된 열의 경우가 아니며, 'truncover'가 여기에 도움이 될지 궁금합니다. – NEOmen

답변

2

infile 문에 truncover 옵션을 추가하십시오.

Truncover는 입력 데이터 레코드가 INPUT 문이 예상하는 것보다 짧을 때 INPUT 문의 기본 동작을 재정의합니다. 기본적으로 INPUT 문은 자동으로 다음 입력 데이터 레코드를 읽습니다. TRUNCOVER를 사용하면 일부 레코드가 INPUT 문이 예상하는 것보다 짧을 때 가변 길이 레코드를 읽을 수 있습니다. 할당 된 값이없는 변수는 누락으로 설정됩니다.

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;