2013-06-17 3 views
3

SAS 9.3에서 맨 앞에 0이있는 첫 번째 열이있는 CSV 파일을 가져와야합니다. 나는 reserached하고 그냥 꽤 성명을 포맷하는 방법을 알아낼 수 없습니다. 나는 이것을 해내었고 엉망으로 만들었습니다 - 작동 할 수도 있지만 통합하는 방법이 확실하지 않은 z 형식이 있다는 것을 압니다.SAS CSV TO CHARACTER LEADING 0s

data pharmacy; 
infile "\\path\June 2013\test.csv" 
dsd missover 
/*lrecl=512 pad*/ 
; 
input 
    Field1 $ 1-10 
/* Field2 $*/ 
; 
RUN; 

답변

0

CSV를 가져올 때 확실히 구분 기호를 사용하고 싶습니다. 열 기반 입력 문을 사용하는 것이 거의 불가능하다는 것을 알았습니다. Field1 $ 1-10.

data pharmacy; 
    infile "\\path\June 2013\test.csv" dsd; 
    input Field1 $ Field2 $; 
RUN; 

개인적으로, 나는 거의 항상 밖으로 쉬운 방법을 그냥 proc import를 사용하면 같은 간단한을 시도했습니다.

4

데이터를 가정하면 다음과 같은 형식입니다 : 당신은 Z. 형식에 대한 올바른 라인을 따라했다

Field1, Field2 
00001,1.2 
00002,4.5 
00010,189.2 
00280546,0 
0145605616,6 

.

Field1을 숫자로 유지하려면 숫자로만 읽으십시오. SAS는 앞에 오는 0을 무시합니다. 그러나 z10을 사용할 수 있습니다. Field1 형식으로. 따라서 데이터 세트가 만들어지면 - 앞에 오는 0이 표시됩니다. 또는 Field1을 문자 변수로 저장하려는 경우에도 쉽게 입력 할 수 있습니다. Field1을 숫자로 읽고 Put (Field1, z10.)을 사용하여 다시 포맷하면됩니다.

DATA WORK.dummyImport; 
    INFILE '/<path>/dummyImport.csv' MISSOVER DSD FIRSTOBS=2 TERMSTR=CRLF; ; 
    INPUT 
     Field1   
     Field2   ; 
    FORMAT FIELD1 Z10.; 
    Field1_char=put(Field1, z10.); 
RUN; 

PROC PRINT DATA=WORK.DummyImport; RUN; 

반환 :

Field1 Field2 Field1_char 
0000000001 1.2 0000000001 
0000000002 4.5 0000000002 
0000000010 189.2 0000000010 
0000280546 0 0000280546 
0145605616 6 0145605616