BookmarkSubscribeRSS Feed

[예제로 배우는 SAS] 4. Creating Permanent SAS Data Sets!

Started ‎06-11-2020 by
Modified ‎06-11-2020 by
Views 258

1.PNG

 

 

안녕하세요. MYSAS입니다.

 

 이번 시간에는 Permanent , 즉 영구적 Data Set을 만드는 법에 대해서 알아보겠습니다. 

 

 

 

목  차

  1. Introduction
  2. SAS Libraries - The LIBNAME Statement 
  3. 왜 영구적 데이터 셋을 만들어야 하는건가?
  4. PROC CONTENTS
  5. SAS Explorer 사용하여 Descriptor Portion 나타내기 
  6. PROC PRINT 사용하여 Data Portion 나타내기 
  7. SAS VEWTABLE 사용하여 Data Portion 나타내기 
  8. SAS 데이터 셋을 DATA STEP 에서 INPUT으로 사용하기

 

 

 

  1.  Introduction

 

  - SAS는 기본적으로 RAW DATA FILE (텍스트 파일등) 이나 엑셀 파일을 직접적으로 사용할 수 없습니다. 어떻게든,  SAS 데이터 셋 안에 있는 데이터 값들이 필요합니다. SAS DATA STEP에서 데이터 셋들을 만들 수 있다는 것을 기억하세요. 또는, 엑셀, 오라클, DB2와 같은 다른 소스에서 데이터를 전환시켜도 됩니다.

 

 

  - 이번 장에서는 어떻게 SAS DATA SET을 영구화 시키는지, 데이터 셋의 컨텐츠를 어떻게 결정하는 지에 대해서 알아 볼 예정입니다. 

 

 

 

 

  1. SAS Libraries - The LIBNAME Statement 

 

 

 

이런 DATA 명령문을 쓴다고 합시다

 

 

 

data test;

 

 

 

 

이 때 SAS는 Test라는 일시적인 데이터 셋을 만듭니다. SAS 프로그램을 종료함과 동시에 이 데이터 셋은 사라지죠. 자 SAS의 데이터 셋의 이름은 기본적으로 두부분으로 나누어 져있는데요 

 

 

 

libref.data-set-name

 

 

 

 

- libref란 라이브러리의 이름을 말합니다. 즉 data set이 저장되는 폴더의 개념으로 생각하시면 되구요.

- data-set-name은  말 그대로 데이터 셋의 이름을 말하는 것이구요.

- 자 그럼 여기서 이런 질문이 들어 옵니다. 저기 위에 있는 data test; 는 뭔가요? 

 

 

 

사실 저 속에는 

 

 

 

data work.test; 에서 work가 생략된 명령문이고 보셔도 됩니다. 즉, 일시적인 데이터 셋은 자동적으로 WORK라는 라이브러리에 저장이 되는데 이는 생략가능 하기 때문에 저렇게 코딩을 해도 무방합니다.

 

자 그럼 영구적인 데이터 셋은 WORK가 아닌 다른 라이브러리에 저장이 되어야 하겠죠? 여기서 라이브러리를 만드는 방법을 알아 보겠습니다. 다음 코딩을 한번 살펴보시죠

 

 

libname mozart 'c:\books\learning';

 

data mozart.test_scores;

   length ID $  NAME  $  15;

   input  ID  $  Score1-Score3  Name $;

datalines;

1  90  95  98  Cody

2  78  77  75  Preston

3  88  91  92  Russell

;

 

 

 

Libname을 통해서 mozart라는 라이브러리가 형성이 됩니다. 그리고 생성한 데이터 셋은   c:\books\learning 이 폴더에 저장을 하게 됩니다. mozart.test_socres라는 명령문은 결국 mozart라는 라이브러리 안에 test_scores라는 데이터셋을 만들겠다는 것입니다. 

 

 

 

 

 

  1. 왜 영구적 데이터 셋을 만들어야 하는건가?

 

데이터셋이 작다면 매번 SAS를 시작할때마다 만들어도 상관이 없겠죠. 하지만 그 크기가 매우 크다면 영구적 데이터 셋을 만들고 매번 다시 만들 필요 없이 편리하게 불러내어 사용할 수 있겠죠?

 

 

  

4, PROC CONTENTS

 

SAS 데이터 셋은 두가지 파트로 나눠져 있습니다. 바로 Descriptor portion과 Data portion인데요, 문자 그대로 Descriptor portion은 데이터에 대한 묘사를 하는 부분입니다. 여기서 PROC CONTENTS로 해야한다는 것입니다.

 

proc contents data= mozart.test_scores;

run;

 

 

 

 

                                                SAS 시스템                                          1

                                                      2011년 02월 07일 월요일 오전 11시36분59초

 

                                       CONTENTS 프로시저

 

         데이터셋 이름  MOZART.TEST_SCORES                       관측치         3

         멤버 유형      DATA                                                                 변수           5

         엔진           V9                                                                        인덱스         0

         생성일         2011년 02월 07일 월 오전 11시38분16초    관측치 길이    48

         마지막 수정일  2011년 02월 07일 월 오전 11시38분16초    삭제된 관측치  0

         보호                                                    압축여부       아니오

         데이터셋 유형                                           정렬           아니오

         레이블

         데이터 표현    WINDOWS_32

         엔코딩         euc-kr  Korean (EUC)

 

 

                                     엔진/호스트 관련 정보

 

           데이터셋 페이지 크기               4096

           데이터셋 페이지 번호               1

           첫 번째 데이터 페이지              1

           페이지 당 최대 관측치 수           84

           첫 번째 데이터 페이지의 관측치 수  3

           데이터셋 수리의 번호               0

           파일명                             c:\books\learning\test_scores.sas7bdat

           생성된 릴리즈                      9.0202M3

           생성된 호스트                      XP_PRO

 

 

                                  변수와 속성 리스트(오름차순)

 

                                  #    변수      유형    길이

 

                                  1    ID        문자       3

                                  2    NAME      문자      15

                                  3    Score1    숫자       8

                                  4    Score2    숫자       8

                                  5    Score3    숫자       8

 

 

 

 

보시다시피 데이터에 관한 정보가 있는데요, 변수의 갯수, 관측치수, 파일을 만든 날짜 등이 나와있습니다. 

 

자 여기까지 PROC CONTENTS로 DESCRIPTOR PORTION을 보는 방법을 알아 보았구요 이번엔 SAS 라이브러리 안에 데이터 셋들의 이름을 나열하는 방법을 알아 보겠습니다. 

 

PROC CONTENTS DATA=mozart._ALL_  NODS;

RUN;

 

여기서   _ALL_  은 보시다시피 모든 데이터 셋을 지칭하는 것이고 NODS는 SAS 데이터 셋의 이름만 꺼내겠다는 말입니다. 그러타면 예상을 해보지요. 저희가 오늘 만든 mozart라는 라이브러리에는 과연 얼마나 많은 데이터 셋이 있을까요?

 

 

 

 

 

                                     SAS 시스템                                          4

                                                      2011년 02월 07일 월요일 오전 11시36분59초

 

                                       CONTENTS 프로시저

 

                                           디렉터리

 

                              라이브러리 참조  MOZART

                              엔진             V9

                              물리적 경로      c:\books\learning

                              파일명           c:\books\learning

 

 

                                   멤버   파일

                   #  이름         유형   크기  마지막 수정일

 

                   1  TEST_SCORES  DATA   5120  2011.02.07 오전 11:38:16

 

 

 

 

그렇습니다. 바로 test_scores라는 데이터 셋 한 개 겟죠?

 

 

  1. SAS Explorer 사용하여 Descriptor Portion 나타내기 

 

- 솔직히 Descriptor portion은 몇번의 클릭질(?)이면 확인 할 수 있습니다. 왼측 하단에 탐색기로 가서 라이브러리 - Mozart 에 들어가서   test_score이라는 데이터 셋을 오른쪽 클릭하시면 칼럼보기가 있는데 거기에서도 역시 변수에 관한 정보들을 얻을수 있습니다. 

- 상세한 정보를 얻고자 하시면 상세라는 탭을 클릭하시면 되구요

 

 

  1. PROC PRINT 사용하여 Data Portion 나타내기 

 

이건은 예전 많은 예제들 속에서 쉽게 접했을 것이라 예상합니다. 간단히 하고 넘어가도록 하지요.

 

 

proc print data=mozart.test_scores;

run;

 

이라는 프로그램을 통해 mozart라는 라이브러리 안에 test_scores라는 데이터 셋을 출력을 하는 것입니다. 

 

 

 

 

                                                   SAS 시스템                                          6

                                                      2011년 02월 07일 월요일 오전 11시36분59초

 

                      OBS    ID    NAME       Score1    Score2    Score3

 

                       1     1     Cody         90        95        98

                       2     2     Preston      78        77        75

                       3     3     Russell      88        91        92

 

 

 

참 쉽죠이잉?

 

 

 

  1. SAS VIEWTABLE 사용하여 Data Portion 나타내기 

 

이것도 마찬가지로 앞에서의 우리의 수고아닌 수고를 무력화 시켜버리는 간단한 클릭에 의한 방법인데요. 방금 5번째 단원에서 보셧듯이 라이브러리에 들어가셔서 데이터셋을 더블클릭하시면 테이블 형식으로 DATA SET을 살펴 볼 수 있습니다. 이렇게요

 

232(1).jpg

 

이러면 편한 점이 열을 드래그, 드롭할 수 있고, 정렬도 가능하며 숨길 수 도 있습니다. 엑셀과 거의 비슷한 기능을 보이죠. 

명심해야할 점은 Data를 수정하기 전에 반드시 이 테이블은 꺼야 적용이 된다는 점입니다

 

 

  1. SAS 데이터 셋을 DATA STEP 에서 INPUT으로 사용하기

 

Raw data files이외에도 SAS 데이터 셋은 DATA Step에 있어 input으로도 사용가능 합니다. 

저희가 만들엇던 test_Scores라는 데이터 셋은 ID, Navme, Score1 에서부터 Score3까지의 변수를 가지고 있습니다. 만약 본인이 Score 1에서부터 3까지의 평균 성적을 내보고 싶다면 ?

 

 

libname learn 'c:\books\learning';

data new;

   set  mozart.test_scores;

  AveScore = mean(of score1-score3);

run;

 

- 자 여기서 의미를 한번더 복습해봅시다. LIBNAME문을 통해 learn이라는 라이브러리를 만들 수 있고 만든 데이터 셋은 c:\books\learning라는 폴더에 저장을 할 것입니다. 

new라는 이름의 데이터를 만들 것인데 이는 임시적인 데이터 셋입니다. 여기서 열쇠를 가지고 있는 것은 바로 SET 문입니다. SET문은 우리가 읽어오고자 하는 테이터 셋을 지정해주는 명령문입니다.

- 즉. new라는 데이터 셋의 데이터 값들은 mozart안에 test_scores 데이터 셋에서 가지고 올것이구요 Avescore라는 변수를 만들되 이는 score1-score3까지의 평균값을 나타내는 것입니다. 

 

 

출력해볼까요?

 

 

 

proc print data=new;

run;

 

 

 

 

 

 

                                         SAS 시스템                                          7

                                                      2011년 02월 07일 월요일 오전 11시36분59초

 

                                                                         Ave

                 OBS    ID    NAME       Score1    Score2    Score3     Score

 

                  1     1     Cody         90        95        98      94.3333

                  2     2     Preston      78        77        75      76.6667

                  3     3     Russell      88        91        92      90.3333

 

 

 

 

 

 

 

 

수고하셨습니다. 문제는 다음 시간에 리뷰용으로 올려드리겠습니다~ ^^~


본 자료의 저작권은 sas에 있습니다

Version history
Last update:
‎06-11-2020 09:22 PM
Updated by:
Contributors

sas-innovate-white.png

Special offer for SAS Communities members

Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.

 

View the full agenda.

Register now!

Article Labels
Article Tags