BookmarkSubscribeRSS Feed

[SAS 활용 노하우] TABULATE: 다차원 테이블 작성

Started ‎01-25-2022 by
Modified ‎01-25-2022 by
Views 3,686

 

 

이번 게시글은 차원이 확장된 경우로 행(Row)과 열(Column)로 이루어진 다차원 테이블을 작성하는 방법에 대한 글입니다.

 

1. 행과 열의 지정

 

data work.item;
input region $ sex $ job $ age item1 - item3 @@;
label region = '지역' sex = '성별'
      job = '직업'  age = '나이'
      item1 = '문항1' item2 = '문항2' item3 = '문항3';
      
cards;
1 F A 25 1 1 1      2 M B 26 2 1 1      3 F C 31 1 3 1
1 M A 35 1 2 3      2 F C 29 1 1 2      3 F A 28 1 1 1
1 M C 33 2 1 2      2 M A 25 3 2 2      3 M B 24 1 3 2
1 F B 33 2 3 2      2 F A 27 2 1 1      3 F A 29 2 1 3
1 F A 35 1 3 1      2 M B 28 1 1 2      3 M B 34 2 1 1
1 F C 25 1 1 3      2 M C 33 1 1 1      3 F C 37 1 2 1
1 F A 31 2 2 1      2 F C 29 2 1 2      3 F B 32 1 1 2
1 M A 21 1 1 3      2 M C 23 1 2 2      3 M C 25 1 3 2
1 M B 35 2 1 1      2 M A 39 1 2 3      3 F A 26 3 2 3
1 F B 33 2 3 2      2 M C 27 2 1 2      3 M C 23 2 1 1
1 F . 29 2 3 2      2 F . 35 1 1 2      3 M . 32 2 2 1
;
run;

PROC TABULATE DATA=WORK.ITEM;
CLASS SEX JOB AGE ITEM1;
TABLE JOB='직업분류' * (SEX=' ' AGE=' '),
(ITEM1 ALL='전체빈도')*F=8.0 /RTS=20 PRINTMISS;
RUN;

image (4).png

 

 

 

위의 열은 2차원 빈도표를 작성하는 프로그램의 예입니다.

코드를 보면 콤마(,)로 행과 열에 대한 테이블 구조를 구분하고 있습니다.

 

 

 

2. 행 레이블의 출력 공간 지정: RTS 옵션

다차원 테이블을 작성할 때 자주 사용되는 옵션으로 RTS= 옵션이 있습니다.

이 옵션은 행 레이블이 출력되는 전체 공간의 길이를 지정하는 것입니다.

예를 들어 위의 예제에서 RTS=20 옵션은 행 레이블이 출력되는 전체 공간의 길이가 20칸이 되도록 지정한 것입니다. RTS 옵션은 텍스트 형식의 출력결과에만 영향을 주며, Results Viewer 윈도우의 출력결과에는 영향을 주지 않습니다.

 

 

 

3. 빈도가 0인 칸에 대한 레이블 지정: MISSTEXT 옵션

 

 

PROC TABULATE DATA=WORK.item MISSING;
CLASS SEX JOB ITEM1;
TABLE JOB*SEX,
(ITEM1 ALL='전체빈도')*F=8.0 /MISSTEXT='없음';
RUN;

 

image (5).png

 

 

빈도가 0인 각 칸(Cell)에 대해서는 마침표(.)로 출력되어 있는 것을 확인할 수 있습니다. 이 때, 마침표를 다른 레이블로 변경하고자 하면 MISSTEXT= 옵션을 사용할 수 있습니다.

 

 

 

4. 수평선의 삭제 및 들여쓰기: NOSEP와 INDENT 옵션

 

 

PROC TABULATE DATA=WORK.ITEM NOSEPS;
CLASS SEX JOB ITEM1;
TABLE JOB*SEX ALL='전체',
(ITEM1 ALL='전체빈도')*F=8.0 /RTS=20 INDENT=4 MISSTEXT='0';
RUN;

image (6).png

 

 

NOSEP옵션은 테이블의 수평선을 출력하지 않기 위해서 지정한 것이고, INDENT = 4 옵션은 하위 차원의 변수인 SEX 의 레이블을 4칸 들여쓰도록 지정한 것입니다. RTS 옵션과 마찬가지로 이 옵션들은 텍스트 형식의 출력결과에만 영향을 주며, Results Viewer 윈도우의 출력결과에는 영향을 주지 않습니다

 

 

5. 3차원 테이블 작성

 

콤마(,)를 여러개 사용하면 다차원 테이블을 작성할 수 있습니다. 이번 예제에서는 변수 JOB의 각 범주별로 독립적인 2차원 테이블을 출력하였습니다.

 

PROC TABULATE DATA=WORK.ITEM;
CLASS SEX JOB AGE ITEM1;
TABLE JOB='직업분류: ',
SEX*(AGE ALL = '전체'),
(ITEM1 ALL='전체빈도')*F = 8.0 /PRINTMISS;
RUN;

 

image (7).png

 

 

 

 

6. 통계량의 출력: VAR

VAR 명령문은 분석하고자 하는 변수들을 지정하는 것으로, VAR 명령문에 지정된 변수들에 대해서는 다양한 통계량들을 출력할 수 있습니다. VAR명령문에 분석대상의 변수를 지정할 때 CLASS 명령문에서 지정된 변수들은 동시에 지정할 수 없습니다. 통계량을 TABLE 먕량문에 지정할 떄에는 변수이름을 지정하는 경우와 유사하게 '통계량 이름' = '출력될 체이블'*F = W.D 와 같은 형식으로 사용하면 됩니다.

이번 예제는 변수 JOB과 SEX에 대해서 빈도(N)와 나이별 문항 1, 2, 3의 평균을 출력하는 프로그램입니다. 이는 통계량의 레이블을 변경하여 보다 보기 좋게 테이블을 출력한 예입니다.

 

PROC TABULATE DATA=WORK.item;
CLASS SEX JOB AGE;
VAR ITEM1 ITEM2 ITEM3;
TABLE JOB*SEX,
N*F=3.0 AGE=' '*(ITEM1 ITEM2 ITEM3)*MEAN*F=6.2;
RUN;

 

image (8).png

 

 

 

7. 백분율 계산: 단순 백분율 출력 - PCTN, PCTSUM

PCTN은 전체 빈도에 대한 각 칸 빈도의 백분율을 계산합니다.

 

 
PROC TABULATE DATA=WORK.ITEM;
CLASS SEX JOB AGE;
TABLE JOB*SEX ALL,
(AGE=' ' ALL)*(N*F=4.0 PCTN='백분율'*F=8.2);
RUN;
 
 
위의 예제를 보면 여자의 빈도는 5이고, 따라서 이 칸에 해당하는 백분율은 5/30 = 16.67%로 계산되어 있습니다.
 
 
PROC TABULATE DATA=WORK.ITEM;
CLASS SEX JOB AGE;
VAR ITEM1 ITEM2 ITEM3;
TABLE JOB*SEX ALL
(ITEM1 ITEM2 ITEM3)*(SUM*F=4.0 PCTSUM='백분율'*F=8.2);
RUN;
 
image (9).png

 

 

이번 예제는 전문직 여자의 문항 1의 합계는 12이고, 이 칸에 해당하는 백분율은 12/46=26.09%로 계산되어 있습니다.

 

Version history
Last update:
‎01-25-2022 02:31 AM
Updated by:
Contributors

sas-innovate-white.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.

 

Early bird rate extended! Save $200 when you sign up by March 31.

Register now!

Article Labels
Article Tags