SAS연습200제/SAS설치와실습

Q_01_03. SAS 프로그램 구조 살펴 보기

sas 2025. 3. 18. 21:25

 

 

 

 

SAS 프로그램은 DATA문과 PROC문을 합한 것에 지나지 않습니다. SAS의 복잡한 프로그램도 이 기본구조의 단순한 확장에 지나지 않으며 또한 기본구조를 여러 번 쓴 것에 지나지 않습니다.

                               SAS의 기본 구조

 

DATA문은 SAS 데이터셋을 만들고, PROC문은 해당 SAS 데이터셋을 처리합니다.

1. 가장 간단한 SAS 프로그램

가장 간단한 SAS 프로그램을 이용하여 설명합니다. 하나의 DATA문과 하나의 프로시져(PROC) 문으로 구성되어 있는 경우입니다.

       /* 간단한 SAS 프로그램 01_simple.sas   */                  
 1     DATA simple;                                                   
 2     INPUT id $ gender $ wei hei age edu  join $10.;                 
 3     CARDS;                                                     
 4     A001 F 65 171 23 1 2012-01-23                                
 5     A003 F 66 172 24 3 2012-02-29                                
 6     A002 M 68 177 40 2 2004-04-30                                
 7     B003 F 69 176 38 1 2003-01-23                                
 8     B001 M 67 173 43 3 2003-05-05                                
 9     B002 M 72 178 42 2 2004-06-24                                
 10    RUN;                                                       
 11    PROC PRINT;                                                
 12    VAR gender wei hei age join;                               
 13    RUN;                                                       

 

[결과]

                           SAS 프로그램을 실행한 화면

 

[설명]

 

SAS 프로그램의 간단한 형태로서 자료변형 부분인 DATA 부분(1∼11)과 PROC 부분(12~14)으로 구성된 프로그램의 예입니다. 단순히 프린트하는 프로그램입니다. 여기서는 편의상 7개의 변수(Variables), 6개의 관측치(Observation)의 예를 들었지만 수천 개의 자료의 경우에도 그 형식은 똑 같습니다.

1 DATA simple; 
       DATA 문 뒤에 붙어있는 “a1”은 SAS 데이터셋 이름입니다. SAS에서는 ‘새스 데이터셋(SAS Dataset)’이라
       부릅니다. 이 이름은 동일한 SAS 프로그램 내에서 나중에 해당 데이터셋을 다시 불러 사용하고자 할 때 사용
       합니다.

2  INPUT id $ gender $ wei hei age edu  join $10.;    
       INPUT 문 뒤에 있는 “ INPUT id $ gender $ wei hei age edu  join $10.;  ”는 변수 이름을 지정하는 문장으로 SAS 데이터셋 “simple”에 어떤 변수가 들어있는지를 지정합니다. 변수 gender 와 join은 문자형이므로 $를 사용하고 join은 10칸을 차지하는 문자형이므로 $10.을 사용하여 지정합니다.

 

SAS 프로그램은 대·소문자의 구분 없이 사용할 수 있습니다. 여기서는 편의상 구분하여 사용하였습니다. 대문자로 적힌 부분은 SAS 명령문으로 단어 그대로 사용하여야 하고, 소문자로 적힌 부분은 사용자가 임의로 사용할 수 있는 부분입니다.

SAS 작업 중에는 ‘WORK.simple’ 이라는 이름의 파일이 임시로 생겼다가 SAS작업이 끝나면 ‘WORK.simple’ 파일이 없어집니다.

SAS 프로그램 “01_simple.sas”를 실행시키면 화면에 탐색기창이 나타나는데, [탐색기]에서 [라이브러리]를 클릭하면 [활성라이브러리]가 나타납니다.

여기에는 SAS에서 이미 지정된 라이브러리가 나타나는데 [Sashelp], [Maps], [Sasuser], [Work] 라이브러리가 있습니다.

여기서 [Work] 라이브러리를 클릭하면 라이브러리 “Work”에 들어있는 파일들의 리스트가 나타나는데 방금 만든 SAS 데이터셋인 “simple” 만들어져 있는 것을 볼 수 있습니다.

                      SAS데이터셋 a1을 보이는 화면

 

[Work]에 들어있는 SAS 데이터셋 “simple”은 SAS를 종료하기 전까지 다시 사용할 수 있으며 SAS가 종료되면 자동적으로 없어집니다. 이때 만들어진 SAS 데이터셋을 다음 작업에 다시 사용할 수 있도록 저장할 수도 있습니다.

 

2. 여러 개 프로시져(PROC문)를 사용하기

하나의 데이터를 이용하여 평균값도 구하고, 회귀분석도 하는 등 여러 개 프로시져(PROC문)를 사용해야 하는 경우가 있습니다. 이런 경우 SAS에서는 사용하고자 하는 프로시져(PROCEDURE) 이름만 붙여 주기만 하면 됩니다.

       /* 여러 PROC문을 사용한 예   */                            
  1     DATA simple;                                                   
 2     INPUT id $ gender $ wei hei age edu  join $10.;                 
 3     CARDS;                                                     
 4     A001 F 65 171 23 1 2012-01-23                                
 5     A003 F 66 172 24 3 2012-02-29                                
 6     A002 M 68 177 40 2 2004-04-30                                
 7     B003 F 69 176 38 1 2003-01-23                                
 8     B001 M 67 173 43 3 2003-05-05                                
 9     B002 M 72 178 42 2 2004-06-24                                
 10    RUN;                                                       
 11    PROC MEANS;VAR hei wei age;                                
 12    PROC REG;MODEL wei=hei;                                    
 13    RUN;                                                       

 

[결과]

                                              결과창에 2개의 결과가 있음을 보이는 화면

 

[설명]

11 PROC MEANS;VAR hei wei age;   
            변수 hei, wei, age 의 평균값 등 기술통계량을 구합니다. 
12 PROC REG;MODEL wei=hei;   
            종속변수 wei로 하고 독립변수 hei로 하는 회귀방정식을 구합니다.      

 

이와 같이 SAS에서는 간단한 자료처리 및 파일 관리(File Handling)를 실행할 수 있는 프로시져부터 복잡한 통계분석 기법을 적용할 수 있는 수많은 프로시져들이 있습니다.
이들 프로시져의 종류와 기능만 알면, 분석하고자 하는 문제에 알맞는 프로시져를 선택하여 ‘PROC 프로시져이름;’의 간단한 형태로 결과를 구할 수 있습니다. 이렇게 구한 결과를 해석하는 것이 SAS의 전부입니다.


SAS를 이해한다는 것은 SAS 사용법과 SAS 프로시져와 관련된 통계학을 안다는 것입니다.


여러 개의 PROC을 사용한 경우 SAS 결과 창을 보면 두 개의 결과가 있는 것을 볼 수 있습니다. 이들 결과를 클릭하면 그 내용을 볼 수 있고, 이들 결과들을 삭제할 수도 있습니다.

                      결과물을 삭제하는 화면

 

3. 자료를 변형하기

SAS를 이용하여 데이터를 분석할 때, 주어진 데이터를 이용하여 새로운 변수들을 만들어 분석하게 되는 경우가 많습니다. 자료를 변형하거나 새로운 변수를 만드는 방법을 설명합니다.

       /*    자료변형부분을 추가한 예         */                   
       * 체질량 지수 BMI Body Mass Index = 체중(kg)/키(m)제곱;     
  1     DATA simple;                                                   
 2     INPUT id $ gender $ wei hei age edu  join $10.;                 
 3     CARDS;                                                     
 4     A001 F 65 171 23 1 2012-01-23                                
 5     A003 F 66 172 24 3 2012-02-29                                
 6     A002 M 68 177 40 2 2004-04-30                                
 7     B003 F 69 176 38 1 2003-01-23                                
 8     B001 M 67 173 43 3 2003-05-05                                
 9     B002 M 72 178 42 2 2004-06-24                                
 10    RUN;                                                       
 11    PROC PRINT;                                                 
 12    RUN;                                                        
 13    DATA b12;SET simple;                                             
 14   bmi = wei/(hei/100)**2;                                          
 15    PROC PRINT;        
 16   DATA b2;SET b1;
 17    bmil=log(bmi);
 18    PROC PRINT;        
  19    PROC MEANS DATA=a1;                                         
 20    RUN;                                                       

 

[결과]

 

                      새로운 변수 bmi를 만든 화면

 

설명]

13 DATA b1;SET simple;
          SAS 데이터셋 ‘simple’을 이용하여 SAS 데이터셋 ‘b1’을 만듭니다. 
14 bmi = wei/(hei/100)**2; 
        몸무게(변수 wei)를, 센티미터 단위로 되어 있는 키(변수 hei)를 100 으로 나눈 값(미터 단위로 변환)의 제곱
        으로 나누어 변수 bmi 로 저장한다는 것을 의미합니다. 이와 같이 원시자료를 변형(Assignment)하거나 
        새로운 변수를 만들려면 등식기호(=)를 사용하며 등식 기호 왼쪽에 새로운 변수명을, 등식기호(=) 
        오른쪽에는 수식을 주면 됩니다.
         SAS 데이터셋 ‘b1’에는 SAS 데이터셋 ‘simple'에 있는 변수 외에 변수 bmi가 추가됩니다.

16 DATA b2;SET b1;
         SAS 데이터셋 ‘b1’을 이용하여 SAS 데이터셋 ‘b2’을 만듭니다
17 bmil=log(bmi);
         SAS 데이터셋 ‘b2’에는 SAS 데이터셋 ‘b1'에 있는 변수 외에 변수 bmil이 추가됩니다.

 

18 PROC PRINT; 의 결과

                      SAS 데이터셋 ‘b2’의 내용

 

19 PROC MEANS DATA=b1;

                      SAS 데이터셋 ‘b1’에 있는 변수들의 기술통계량

 

현재까지 만들어진 SAS 데이터셋에는 B1과 B2가 있습니다. PROC MEANS DATA=b1;와 같이 뒤에 DATA=b1을 지정하였으므로 SAS 데이터셋 B1에 대하여 PROC MEANS를 실행합니다. 그리하여 변수 bmil 에 대한 평균값이 보이지 않습니다.

Copy<SAS의 주된 기본 사용법>

1) SAS 데이터셋이름으로 32자내의 임의의 영문자과 숫자를 사용합니다. #, $, @ 등 특수문자를 사용할 수 없습니다. 
2) SAS 데이터셋을 구성하는 변수이름은 32자를 넘지 말아야 합니다. 변수명 첫자는 숫자로 시작하면 안 됩니다. 중간에 공백이 있으면 안됩니다. - (하이픈)은 사용할 수 없습니다. 
3) SAS 문장은 세미콜론(;)으로 구분합니다. 
4) SAS 문장은 어떤 열(Column)에서도 시작할 수 있고 여러 행에  걸쳐서 써도 됩니다. 
5) 한 행(Line)에 여러 문장을 쓸 수 있습니다. 단, 문장마다 세미콜론으로 구분해야 합니다. 
6) 1행에 *를 표시하면 그 행은 참조로 사용되며 실행되지 않습니다. 
7) 여러 문장을 주석으로 사용하고자 하는 경우에는 /* 으로 시작하여 */로 닫습니다.