2016-07-13 2 views
0

이 문제를 해결하기 쉽도록 R에서 SAS로갑니다.PROC에서 문자열을 기준으로 빈 값을 지정하십시오. IMPORT

%Macro 기능이있는 CanSim CSV 파일 (한 example table here)을로드하려고합니다.

%Macro ReadCSV (infile , outfile); 
PROC IMPORT 
     DATAFILE= &infile. 
     OUT= &outfile. 
     DBMS=CSV REPLACE; 
GETNAMES=YES; 
DATAROW=2; 
RUN; 
%Mend ReadCSV; 
%ReadCSV("\\DATA\CanSimTables\02820135-eng.csv", work.cs02820135); 
%ReadCSV("\\DATA\CanSimTables\02820158-eng.csv", work.cs02820158); 

문제는 모든 CSV하자마다 값이 누락에 ".."Value 숫자 열을 보유한다는 것이다. IMPORT이이 문자열로 행에 도착하면 오류가 발생합니다.

IMPORT에 ".."를 제거하거나 누락 된 값으로 처리해야한다고 알리는 방법이 있습니까? (나는 DSD 옵션을 참조하는 포럼을 찾았지만 여기서는 도움이되지 않습니다.)

감사합니다!

+0

파일의 레이아웃이 매년 동일합니까? 그렇다면 파일을 읽는 데이터 단계 만 작성하면됩니다. 그런 다음 데이터를 읽는 방법을 제어 할 수 있습니다. – Tom

+0

정확히 무슨 뜻인지 모르겠지만 아니오 (?) : 각 CSV 파일에서 행은 파일마다 다를 수있는 위치와 시간에 따라 색인화됩니다. 열 (수와 이름)이 다릅니다. 그러나 유사점이 있습니다. 예를 들어 숫자 값은 항상 "값"이라는 열에 있습니다. 그게 도움이됩니까? –

+0

SAS 로그를 붙여 넣을 수 있습니까? SAS 로그는 가져 오기 및 사용 된 데이터 단계에 대한 정보를 표시합니다. 템플릿을 사용하여 동작을 수정할 수 있습니다. – Altons

답변

3

PROC IMPORT는 데이터 구조에서만 추측 할 수 있습니다. 예를 들어 ..이 표시되고 열에 숫자 대신 문자열이 있다고 가정합니다. 또한 생성 된 데이터 세트를 쓸모 없게 만들 수있는 다른 결정을 할 수 있습니다.

파일을 읽으려면 자신의 데이터 스텝 코드를 쓰는 것이 좋습니다. 그렇게하는 것이 그리 어렵지 않습니다. 귀하의 예제 링크 된 파일에 대한 모든 복사 및 붙여 넣기 CSV 파일의 첫 번째 행을 붙여 넣기 및 쉼표를 제거하고 이름을 유효한 변수 이름을 확인하고 문자 변수를 만드는 데 얼마나 오랫동안 추측합니다.

data want ; 
    infile "&path/&fname" dsd truncover firstobs=2 ; 
    length Ref_Date $7 GEO $100 Geographical_classification $20 
     CHARACTERISTICS $100 STATISTICS DATATYPE $50 Vector Coordinate $20 
     Value 8 
    ; 
    input (Ref_Date -- Value) (??) ; 
run; 

?? 수정은 숫자로 변환에게 VALUE 열에서 텍스트를하려고 할 때 오류를보고하지 SAS 말할 것이다. 따라서 ..과 파일의 다른 가비지는 누락 된 값을 생성합니다.

+0

우수. '?? '수정자가 필요한 것 같습니다. 많은 감사 –

0

이 질문과 관련이 없지만 "N"또는 "D"또는 누락 된 문제가있는 경우에는 missing statement (중요하게는 missing option과 별개입니다) . SAS 지시

missing M; 

누락 된 값으로 데이터의 단일 문자 M를 확인하고, 적절하게 판독한다. .M 특별 누락 값으로 읽으므로 기능적으로는 . 정규 누락과 유사하지만 (평등 진술에서는 실제로 동일하지 않음)

관련 문제