2014-09-25 6 views
0

SAS에 대한 실무 지식이 없지만 가져오고 작업해야하는 Excel 파일이 있습니다. Excel 파일에는 약 100 개의 행 (관찰)과 7 개의 열 (수량)이 있습니다. 경우에 따라 특정 관찰에 한 열에 데이터가 없을 수도 있습니다. SAS로 데이터를 읽을 때 그 관찰을 완전히 무시할 필요가 있습니다. 나는 이것에 대한 명령이 무엇인지 궁금 하네.SAS에서 가져온 데이터를 무시 Excel에서 가져 오기

누락 된 데이터가있는 Excel 파일의 행을 삭제하는 것이 가장 쉬운 저렴한 솔루션이지만 일부 SAS를 배우기 때문에 SAS 명령으로이 작업을 수행하려고합니다.

감사합니다.

답변

1

"SAS/ACCESS Interface to PC Files"라이센스가있는 경우 (힌트 : proc setinit)이 코드로 Excel 파일을 가져올 수 있습니다. 가져 오기를 예를 들어,

proc import 
    DATAFILE="your file.xlsx" 
    DBMS=XLSX 
    OUT=resulttabel(where=(name ne "")) 
    REPLACE; 
    MIXED=YES; 
QUIT; 
+1

'IMPORT'은 대화식 프로 시저가 아니기 때문에 단계는 'QUIT' 대신'RUN '으로 종료되어야합니다. –

3

가져 오기 당신이 원하는 그러나 데이터 다음 어디 옵션을 사용하면 열 "이름이"비어 있지 않은 곳이,이 예제에서는 사용자가 행을 유지합니다 유지하려는 행을 선택할 수 있습니다 절차, Stig Eide 언급했다.

proc import 
    datafile = 'C:\...\file.xlsx' 
    dbms = xlsx 
    out = xldata 
    replace; 
    mixed = YES; 
    getnames = YES; 
run; 

설명 :

  • DBMS에 = 옵션은 SAS 데이터를 읽으려고 시도하는 방법을 지정합니다. 파일이 Excel 2007 이상의 파일 (예 : xlsx) 인 경우 여기에 표시된대로 DBMS = XLSX를 사용할 수 있습니다. 파일이 오래된 경우 (예 : xlsx가 아닌 xls이면 DBMS = EXCEL을 시도하십시오.
  • OUT = 옵션은 출력 데이터 집합의 이름을 지정합니다.
    • 단일 레벨 이름이 지정되면 데이터 세트가 WORK 라이브러리에 기록됩니다. SAS 세션마다 고유 한 임시 라이브러리입니다. 세션이 끝나면 삭제됩니다.
    • 영구 데이터 세트를 작성하려면 mylib.xldata와 같은 두 개의 레벨 이름을 지정하십시오. 여기서 mylib는 LIBNAME 문으로 작성된 SAS 라이브러리 참조 (libref)를 나타냅니다.
  • REPLACE는이 단계를 처음 실행할 때 생성 된 데이터 집합을 대체합니다.
  • MIXED = YES는 SAS에 데이터가 혼합 유형일 수 있음을 알립니다.
  • GETNAMES = YES는 Excel의 열 이름을 기반으로 SAS 데이터 집합 변수의 이름을 지정합니다. 내가 제대로 이해하면

, 당신은 일곱 열 중에서 누락 된 값을 갖는 데이터 세트에서 모든 관찰을 제거 할. 이이 작업을 수행하는 애호가 가지 방법이 있습니다,하지만 난이 같은 간단한 방법을 사용하는 것이 좋습니다

data xldata; 
    set xldata; 
    where cmiss(col1, col2, ..., col7) = 0; 
run; 

CMISS 기능에 관계없이 데이터 유형, 각 관찰에서 지정한 변수 누락 된 값의 수를 계산합니다. 우리가 WHERE CMISS() = 0을 사용하고 있기 때문에, 결과 데이터 집합은 7 개의 열에 대해 누락 된 데이터가없는 레코드 만 포함하게됩니다.

의심 스럽다면 SAS online documentation을 찾아보십시오. 매우 철저합니다.

관련 문제