SAS에서 외부 파일을 읽고, 외부 파일을 만들어야 할 때 의도하지 않은 폴더에서 자료를 읽으려고 하고, 쓸려고 해서 곤란한 적이 있다.

예를 들어 다음과 같은 자료를 다음과 같은 SAS 프로그램으로 읽으려 한다고 해보자. 현재 SAS 프로그램과 자료가 있는 폴더는 C:\Temp\SAS이다.

 

 

 

SAS 프로그램

data a1 ;

    infile 'hv1_192_finalReport.txt' delimiter='09'x MISSOVER DSD lrecl=32767 firstobs=11;
 
    informat snpname      $37. ;
    informat sampleid     $15. ;
    informat top1_hv1     $1. ;
    informat top2_hv1     $1. ;
    informat gcscore      $6. ;
    informat samplename   $1. ;
    informat forward1_hv1 $1. ;
    informat forward2_hv1 $1. ;
    informat ab1_hv1      $1. ;
    informat ab2_hv1      $1. ;
    informat chr          $2. ;
    informat position     best32. ;
    informat snp          $5. ;
    informat x            $5. ;
    informat y            $5. ;
 
    input
        snpname      $
        sampleid     $
        top1_hv1     $
        top2_hv1     $
        gcscore      $
        samplename   $
        forward1_hv1 $
        forward2_hv1 $
        ab1_hv1      $
        ab2_hv1      $
        chr          $
        position
        snp          $
        x            $
        y            $
    ;
run;

 

위 SAS 프로그램을 실행시키는 방법은 두 가지가 있다. 먼저 SAS 프로그램을 실행하고, 파일 -> 프로그램 열기 -> SAS 프로그램 선택하는 방법이 있다.

 

 

프로그램을 선택한 후 화면

 

 

그리고 프로그램을 실행한 결과

 

 

로그 윈도우의 메시지를 보면 그런 파일이 없다고 나온다. 메시지를 잘 보면 엉뚱한 폴더에서 데이터 파일을 찾고 있다. 이때 데이터 파일의 절대 경로를 적어서 자료를 읽을 수도 있다.

 

    infile 'D:\temp\SAS\hv1_192_finalReport.txt' delimiter='09'x MISSOVER DSD lrecl=32767 firstobs=11;

 

그리고 실행한 결과

 

 

실행이 잘 되었다. 이렇게 해결해도 되지만 작업 폴더를 지정할 수도 있다.

 

SAS 프로그램의 맨 아래쪽에 폴더가 있는 것을 볼 수 있다.

 

 

클릭하여 데이터 파일이 있는 폴더를 지정한다.

 

 

데이터 파일이 있는 폴더를 지정한 화면

 

 

아래쪽 폴더가 바뀐 것을 볼 수 있다. 위의 프로그램을 보면 데이터 파일 이름만 있고 경로는 없다. 실행한 결과.

 

 

실행이 잘 되었다. 이렇게 작업 폴더를 지정하면 파일 이름을 쓸 때, 절대 경로를 지정하지 않아도 된다. 그런데 이렇게 작업 폴더를 지정하지 않아도 된다.

SAS 프로그램을 실행시킬 때 윈도우 탐색기에서 실행할 SAS 프로그램을 마우스 오른쪽 버튼으로 클릭한다.

 

 

SAS 9.4(으)로 열기를 선택한다.

 

 

자동으로 현재 폴더가 작업 폴더로 지정된 것을 볼 수 있다. 이 상태에서 프로그램을 실행하면 데이터 파일을 잘 읽는다.

그런데 본 포스트를 작성하는 목적은 이렇게 클릭해서 작업 폴더를 지정하는 것이 아니라 프로그래밍적으로 작업 폴더를 지정하는 방법을 살펴보기 위해서이다. 윈도우 SAS에서는 클릭해서 작업 폴더를 지정하든, 프로그래밍적으로 작업 폴더를 지정하든 상관이 없으나, SAS에서 제공하는 인터넷 브라우저에서 사용하는 SAS Studio에서는 사정이 달라진다. SAS Studio는 좀 뒤에 설명한다.

다음은 SAS 프로그램을 실행한 화면

 

 

그리고 아래 프로그램을 입력하고 실행한다.

 

data _null_;
    wd = dlgcdir("D:\temp\SAS");
run;

 

다음은 실행한 화면

 

 

화면의 아래쪽 폴더를 보면 작업 폴더가 바뀐 것을 볼 수 있다.

이제 SAS Studio에 대해서 알아보자. SAS OnDemand for Academics 라는 것이 있다. 검색하면 많이 나온다. 간단히 설명하자면 비싼 SAS를 쓰기에 어려운(?) 학생들을 위하여 인터넷 브라우저에서 무료로 SAS를 사용할 수 있게 해 준거고, 그때의 SAS 프로그램 인터페이스를 SAS Studio라고 부르는 거 같다.

SAS OnDemand for Academics 접속 화면.

 

 

로그인하고 Access Now 클릭

 

 

다시 Sign In

 

 

Sign In 클릭한 화면

 

 

Launch 클릭

 

 

여기서는 파일이라는 폴더에 Microarray라는 폴더를 만들고 위에서 사용한 SAS 프로그램과 데이터 파일을 업로드한 상태이다. 그리고 SAS 프로그램을 연 상태이다. 여기서 사람이 뛰는 아이콘을 클릭하여 프로그램을 실행한다. 실행한 후 로그 화면이다.

 

 

역시나 작업 폴더가 지정이 되어 있지 않아 엉뚱한 폴더에서 데이터 파일을 찾고 있어 나타나는 오류이다. 현재 데이터 파일과 SAS 프로그램이 있는 폴더는 다음과 같다. Microarray 폴더를 오른쪽 버튼으로 클릭하고 속성을 클릭한다.

 

 

위치의 경로를 선택하여 복사한다.

다음을 프로그램의 앞에 복사한다.

 

/* 다음 디렉토리를 워킹 디렉토리(자료를 import하거나 export하는 디렉토리)로 설정 */
data _null_;
    wd = dlgcdir("/home/u63604154/Microarray");
run;

 

 

 

실행 화면

 

 

이런 방식으로 SAS Studio에서 손쉽게 자료를 읽거나 쓸 수 있다. 일부에서는 업로드한 데이터를 SAS dataset으로 변환 후, Libname을 적용하고 데이터 분석을 하라는 설명도 있으나 위의 설명처럼 작업 폴더를 지정하고 SAS 프로그램을 그대로 사용하는 것이 편리한 것으로 보인다. 아니면 코멘트 부탁.

 

SAS OnDemand for Academics에서는 저장 공간 5Gb를 제공하는 것으로 보인다. 필요한 사람은 잘 써보자.

 

 

 

 

+ Recent posts