BookmarkSubscribeRSS Feed

[BASE SAS기초] Reading SAS Data Sets (1)

Started ‎06-15-2020 by
Modified ‎06-15-2020 by
Views 137

 

[BASE SAS기초] Reading SAS Data Sets (1)

이번 강의는 SAS DATA STEP에 대한 이해와 활용을 목적으로 합니다.

아래의 문장들을 하나하나 알아보도록 하겠습니다.^^

LIBNAME libref ‘SAS-data-library’;
DATA output-SAS-data-set;
            SET input-SAS-data-set;
            WHERE where-expression;
            KEEP variable-list;
            LABEL variable=’label’
                        variable=’label’
                        variable=’label’;
            FORMAT variable(s) format;
RUN;


먼저 오늘은 LIBNAME 문장, DATA문장, SET문장, RUN문장 알아보도록 하겠습니다.
(참고로, BASE SAS에서 문장은 ‘;’으로 구분합니다.
EX. LIBNAME ~ ;  LIBNAME 문장이라 하고 SET ~ ;  SET문장이라고 부릅니다.)

 

  1. LIBNAME 문장

    LIBNAME 문장은 영구적인 데이터 셋을 읽거나 만들  필요한 문장으로써
    LIBNAME은 Library Name 약자입니다.
    따라서 LIBNAME문장은 영구라이브러리를 생성해 주는 문장 것입니다.
    즉, 이미 사용자의 OS에 있는 파일들의 물리적인 위치(EX. C드라이브의 GAME폴더)와
    SAS에서의 라이브러리를 연결시켜주는 문장
    입니다.

     라이브러리(Library)?
    Library는 SAS file들의 집합이라고 생각하시면 됩니다.
    즉, 하나의 Library안에 여러 개의 file들이 들어있는 것이죠.

    라이브러리는  임시라이브러리(Temporary Library)
                             ② 영구라이브러리(Permanent Library) 나뉩니다.

     임시라이브러리 안의 파일들은 SAS Session(BASE SAS Software) 꺼지면 지워집니다.
    (임시라이브러리는 이미 만들어져 있는WORK   개뿐으로 사용자가 새로 생성할  없습니다.)

    반면  영구라이브러리 안의 파일들은 SAS Session 꺼져도 지워지지 않습니다.
    (영구라이브러리는 사용자가 LIBNAME문장을 작성하여 1개 이상 생성할  있습니다.)


그럼 본격적으로 LIBNAME 문장에 대해 알아보도록 하겠습니다.
위에서 보신 바와 같이 LIBNAMME문장의 구조는 아래와 같습니다.

LIBNAME libref ‘SAS-data-library’;

문장의 구성을 보면,
먼저 LIBNAME 영구라이브러리를 생성하겠다 라는 키워드(Keyword)입니다.
libref 자리에는 생성하고자 하는 영구라이브러리의 이름 적어주시면 됩니다.
  (참고 : 라이브러리 명은 최대8글자까지 가능합니다.
  또한 시작은 문자 또는 언더바(_)로 시작하여야 하고
  나머지 뒷부분의 이름은 문자, 숫자, 언더바(_) 모두 가능합니다.
  대소문자는 구분하지 않습니다.)
마지막으로 ‘SAS-data-library’  따옴표 안에 영구라이브러리의 위치 지정해주시면 됩니다.

[LIBNAME 문장 예제/활용]

즉, 만일 Customer라는 이름의 영구라이브러리를 C드라이브의 DATA폴더로 지정하고자 하신다면  
LIBNAME Customer ‘C:\DATA’; 라고 적어주시면 됩니다.
위의 문장을 실행하시면
C드라이브의 DATA폴더를 SAS와 연결시켜주는 Customer라는 라이브러리가 생성됩니다.

그럼 이제 영구라이브러리를 이용하는 방법에 대해 알아보도록 하겠습니다.
파일을 가져올  libref.filename 구조 적어주시면 됩니다.

예를 들면 Customer 라이브러리 안의 Teen_customer라는 SAS데이터  읽어와서
임시라이브러리인 WORK TEEN이라는 데이터셋 명으로 생성하고 싶다면 
아래의 DATA STEP을 실행하시면 됩니다. (DATA문장으로 시작하면 DATA STEP이라 부릅니다.)

DATA WORK.TEEN;
SET Customer.Teen_customer;
run;


  (임시라이브러리는 WORK  하나이므로  
  위의 DATA문장에서 WORK.TEEN을 TEEN으로 바꾸어 작성하여도 무방합니다.
  즉, TEEN앞에 있는WORK.을 생략하셔도 됩니다.)


2. DATA문장, SET문장, RUN문장

여기서 DATA문장과 SET문장, RUN문장에 대해 간단히 설명 드리겠습니다.

먼저 DATA 문장
DATA output-SAS-data-set;
으로, DATA SET을 생성하는 문장입니다.
output-SAS-data-set위치에 생성할SAS데이터   적어주시면 됩니다.

SET문장
SET input-SAS-data-set;
으로, input-SAS-data-set전체를 그대로 가져온다 의미의 문장입니다.
즉, 전체 복사로 받아들이시면 좋을  같습니다.

마지막으로 RUN문장
RUN;
으로, DATA STEP 끝을 알리는 문장입니다.


  1.  활용하기

    또, LIBNAME문장을 여러  작성함으로써 아래와 같이 활용할  있습니다.

    LIBNAME Customer ‘C:\DATA’;
    LIBNAME Sales ‘C:
    \INCOME’;
    DATA Customer.Teen_customer;
    SET Sales.Teen;
    RUN;


    위의 코드를 해석해보면 아래와 같습니다.
    LIBNAME Customer ‘C:\DATA’;
    à C드라이브의 DATA폴더를 SAS에 Customer라는 영구라이브러리 만들어 SAS와 연결하기


LIBNAME Sales ‘C:\INCOME’;
à C드라이브의 INCOME폴더를 SAS에 Sales라는 영구라이브러리를 만들어 SAS와 연결하기


DATA Customer.Teen_customer;
SET Sales.Teen;
RUN;

à Sales 라이브러리에 있는 Teen이라는 SAS데이터 셋을 그대로 가지고 와서
     Customer 라이브러리 위치에 Teen_customer라는 이름으로 SAS데이터  생성하기


이로써LIBNAME 문장, DATA문장, SET문장, RUN문장에 대해 간단히 알아보았는데요.
 이해가 되셨는지 모르겠습니다. ^^;

다음 시간에는WHERE문장, KEEP문장에 대해 알아보도록 하겠습니다.
감사합니다 😄

 

 

Version history
Last update:
‎06-15-2020 05:51 AM
Updated by:
Contributors

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

Article Labels
Article Tags