25 Oct 2018

[SAS] PROC TABULATE (Table)

TABULATE는 '표로 만들다' 라는 뜻을 가지고 있다.

1차원, 2차원, 3차원 표를 만들 때, 유용한 프로시저이다.


---------------------------------------------------------------------------------------

PROC TABULATE DATA=데이터명;

CLASS

VAR

TABLE

RUN;

---------------------------------------------------------------------------------------

LIBNAME KO 'D:\exercise';


/* 1차원 테이블 */ 

/* 1차원 테이블, 나라별로 테이블 생성 */

PROC TABULATE DATA=KO.SALES;
 CLASS COUNTRY;
 TABLE COUNTRY;
RUN;

/* 1차원 테이블, 나라별로 테이블 만들고 추가로, 나라 총 합친 거에 대한 것도 집계됨 */

PROC TABULATE DATA=KO.SALES;
 CLASS COUNTRY;
 TABLE COUNTRY ALL;
RUN;


/* 2차원 테이블 */ 

/* TABLE 옵션에서 콤마를 까먹지 말자 */

PROC TABULATE DATA=KO.SALES;
 CLASS GENDER COUNTRY;
 TABLE GENDER, COUNTRY;
RUN;

PROC TABULATE DATA=KO.SALES;
 CLASS GENDER COUNTRY;
 TABLE GENDER ALL, COUNTRY ALL;
RUN;


/* 3차원 테이블 */
PROC TABULATE DATA=KO.SALES;
 CLASS JOB_TITLE GENDER COUNTRY;
 TABLE JOB_TITLE, GENDER, COUNTRY;
RUN;
PROC TABULATE DATA=KO.SALES;
 CLASS JOB_TITLE GENDER COUNTRY;
 TABLE JOB_TITLE ALL, GENDER ALL, COUNTRY ALL;
RUN;

-------------------------------------------------------------------


다음으로 빈도 말고, 특정 종속변수에 대해서 나타내기 위해 'VAR SALARY'를 추가한다.

그런데 VAR SALARY라고 적는 것은, SALARY를 변수로 인식하겠다는 뜻만 되고, 사용은 또 TABLE에 기술해야 한다.


/* COUNTRY별로 SALARY 값이 구분된다. DEFAULT가 SUM이라, SALARY에 대한 SUM 결과가 집계된다 */

PROC TABULATE DATA=KO.SALES;
 CLASS COUNTRY;
 VAR SALARY;
 TABLE COUNTRY*SALARY;
RUN;

/* SUM 이외의 옵션을 걸려면?? */

PROC TABULATE DATA=KO.SALES;
 CLASS COUNTRY;
 VAR SALARY;
 TABLE COUNTRY*SALARY*(옵션);
RUN; 


/* 옵션의 종류 */

CSS CV LCLM MAX MEAN MIN MODE N NMISS KURTOSIS RANGE SKEWNESS STDDEV STDERR SUM SUMWGT UCLM USS VAR PCTN REPPCTN PAGEPCTN ROWPCTN COLPCTN PCTSUM REPPCTSUM PAGEPCTSUM ROWPCTSUM COLPCTSUM MEDIAN P50 P1 P5 P10 Q1 P25 Q3 P75 P90 P95 P99 QRANGE PROBT T 등이 있다.


/* 예를 들어, */

PROC TABULATE DATA=KO.SALES;
 CLASS COUNTRY;
 VAR SALARY;
 TABLE COUNTRY*SALARY*(MIN MAX SUM MEAN N);
RUN;


/* 2차원 테이블에서, VAR SALARY 써보면 */

PROC TABULATE DATA=KO.SALES;
 CLASS GENDER COUNTRY;
 VAR SALARY;
 TABLE GENDER, COUNTRY*SALARY*(MIN MAX SUM MEAN N);
RUN;



/* TABULATE 구문 안에서 WHERE 문 사용 가능  */

PROC TABULATE DATA=KO.SALES;
 WHERE JOB_TITLE CONTAINS 'Rep';
 CLASS GENDER COUNTRY JOB_TITLE;
 TABLE COUNTRY;
 TABLE GENDER, COUNTRY;
 TABLE JOB_TITLE, GENDER, COUNTRY;
RUN; 


No comments

Copyright © 2018 Mid Air by Ahny. Powered by Blogger.