[BASE SAS기초] Producing Summary Reports(4)
안녕하세요^^
오늘은 Producing Summary Reports의 네번째 시간으로 PROC TABULATE 프로시저에 대해 공부해보도록 하겠습니다.
지난 시간까지 Summary Reports하는 두 가지 방법인 PROC FREQ 프로시저와 PROC MEAN 프로시저에 대해 공부해 보았습니다.
PROC TABULATE 프로시저로는 1차, 2차. 3차원의 테이블을 작성할 수 있습니다.
또한, PROC FREQ와 PROC MEAN 처럼 OUT= 옵션을 사용하여 output data sets을 만들 수 있습니다.
PROC TABULATE 프로시저의 기본 form은 아래와 같습니다.
PROC FREQ와 PROC MEANS에서 계산되는 통계량 중 많은 것이 PROC TABULATE 프로시저에서도 계산 가능합니다.
CLASS문이나 VAR문은 반드시 정의되어야 하지만, 두 문장이 동시에 정의되어야 하는 것은 아닙니다.
CLASS 문장은 classification이나 grouping에 사용될 변수를 지정하는데 사용됩니다. CLASS variable은 수치형이나 범주형 모두 가능합니다. 만약 수치형 변수이면 이산형 카테고리로 표현됩니다.
VAR 문장은 분석 대상이 되고, 통계량 값이 계산될 수치형 변수로 정의되어야 합니다. SUM은 default로 작성되는 통계량이며 평균, 합계 등의 여러가지 통계량이 계산될 수 있습니다.
TABLE 문장은 각각의 dimension expression은 콤마(,)로 구분됩니다. 각 dimension expression에 작성되는 모든변수들은 CLASS 문장이나 VAR문장에 정의되어야 합니다.
PROC TABULATE 프로시저의 결과로 나오는 1차, 2차, 3차원의 표는 아래의 도식으로 설명 가능합니다.
이제 데이터를 이용하여 PROC TABULATE의 예제들을 살펴보도록 하겠습니다.
먼저, 데이터는 SASHELP 라이브러리에 있는 HEART 데이터를 사용하도록 하겠습니다.
SET문장을 이용하여 데이터를 불러옵니다.
PROC TABULATE 프로시저를 사용하여 status를 column dimension(열 차원)으로 하는 표를 작성합니다.
만약 TABLE문장에 class variable만 있다면, 나타나는 default 통계량은 N 또는 결측값이 아닌 값의 개수입니다.
PROC TABULATE 프로시저를 사용하여 status를 column dimension(열 차원)으로 하고, sex를 row dimension(행 차원)으로 하는 표를 작성합니다.
TABLE문의 순서를 변경하면, 행과 열이 바뀌어서 표가 작성됩니다.
PROC TABULATE 프로시저를 사용하여 status를 column dimension(열 차원)으로 하고, sex를 row dimension(행 차원)으로 하며, Smoking_Status를 page dimension으로 하는 표를 작성합니다.
연산자는 dimension expression에서 사용될 수 있으며, *는 cross table information을 제공합니다.
PROC TABULATE 프로시저를 사용하여 모든 sex에 대해 status와 weight변수가 cross된 표를 작성합니다.
VAR문장에 weight가 정의되어 있으므로, default 값인 SUM 통계량이 작성됩니다.
PROC TABULATE 프로시저를 사용하여 모든 sex에 대해 status와 weight변수가 cross된 표를 작성합니다.
TABLE문장 뒤에 MIN, MAX 값을 report하는 옵션이 작성되었기 때문에 작성된 표는 MIN, MAX값이 작성됩니다.
PROC TABULATE 프로시저는 OUT 문장을 사용하여 결과 데이터셋을 생성할 수 있습니다.
앞선 예제와 같은 예제입니다. 여기서 OUT= 을 사용하여 tabulate라는 데이터 셋을 새로 만듭니다.
_TYPE_ 변수는 문자이며 어떤 CLASS 변수의 조합인지를 나타내는 변수입니다.
OBS 1부터 4까지는 Sex와 Status 변수가 모두 사용된 값(1)이므로 11로 지정되며, OBS 5와 6은 Sex 변수는 사용되지 않고(0), Status 변수가 사용되었으므로(1) 01로 지정됩니다.
_PAGE_변수는 수치형 변수이며 그 관측치를 담고있는 logical page의 숫자를 나타냅니다.
Smoking_Status가 1인 ‘Heavy(16-25)’에서 작성된 OBS 1부터 4까지는 _PAGE_가 1로 작성되며, Smoking_Status가 2인 ‘Light(1-5)’에서 작성된 OBS 5부터 8까지는 _PAGE_가 2로 작성됩니다.
마찬가지로 나머지 Smoking_Status 값에 대해서도 _PAGE_가 작성됩니다.
마지막으로 _TABLE_ 변수는 수치형 변수이며 관측치를 담고있는 TABLE 문장의 번호를 나타냅니다.
이상 proc tabulate 프로시저와 예제들에 대해 공부해보았습니다.
읽어주셔서 감사합니다^^
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.