본문 바로가기
Programming/SAS

[SAS 기초] 데이터 전치(PROC TRANSPOSE)

by Kanii 2023. 6. 8.
반응형

오늘은 SAS 데이터를 전치 할 수 있는 procedure인 PROC TRANSPOSE와 이 procedure에서 작동하는 option 3개에 대해서 살펴보려고한다.


1. 데이터 전치

데이터 전치란 말 그대로 기존 데이터의 가로와 세로의 위치를 바꾸는 것이다.

일반적으로 전치라하면 행렬에서의 전치가 생각나는데, 오늘 살펴볼 PROC TRANSPOSE procedure은 단순하게 데이터를 전치 시킨다기보단 reshape 시킨다는 것에 더 가깝다. (R에서 melt나 dcast 등의 역할을 한다고 보는게 적절!)

 

기본적으로 PROC TRANSPOSE의 구문 용법은 아래와 같다.

PROC TRANSPOSE DATA=라이브러리명.데이터명 OUT=라이브러리명.데이터명2;
var 변수1; /*전치에 사용될 변수명*/
id 변수2 변수3; /*명시된 변수들의 조합으로 새로운 변수 명이 생성.*/
by 변수4;  /*전치에는 사용되지않으며 행을 나누는 기준으로 사용됨.*/
RUN;

PROC  TRANSPOSE 구문에서 'OUT='을 지정하지 않으면, 기존 데이터를 변형하여 저장하는 것이 아니라 data1이라는 임의의 데이터셋을 생성하여 전치된 데이터를 저장한다.

또한, var 구문을 사용하여 전치에 사용될 변수를 따로 지정하지 않으면 오직 숫자형 변수들만 선택하여 전치를 수행한다.

문자형 변수를 전치에 사용하고 싶다면 반드시 var 구문에서 지정해주어야한다.

 

바로 예제를 통해 PROC TRANSPOSE를 살펴보겠다.

example data

labs라는 예제 SAS 데이터를 생성하였다.

PROC TRANSPOSE DATA=labs;
RUN;

PROC PRINT DATA=data1;
RUN;

PROC PRINT DATA=data1;

전치 결과(data1)을 살펴보면 기존 labs데이터에서 숫자형 변수인 SUBJID, SAMPLDAT(날짜 상수), VALUE만이 전치 된 것을 확인 할 수 있다.

 

PROC TRANSPOSE DATA=labs out=labstran;
VAR VALUE;
BY SAMPLDAT SUBJID;
ID LABTEST;
RUN;

PROC PRINT DATA=LABSTRAN;
RUN;

PROC PRINT DATA=LABSTRAN;

위 코드의 결과를 살펴보면 SAMPLDAT와 SUBJID 별로 LABTEST의 결과 값(VALUE)를 깔끔하게 확인 할 수 있도록 데이터가 예쁘게 전치된 것을 확인 할 수 있다.


SAS에서 PROC TRANSPOSE 구문은 데이터의 형태를 long/wide로 쉽게 바꿀 수 있도록 해준다.

통계 분석을 수행할 때, 실험 설계에 따라 같은 데이터라도 그 형태를 다르게 변형하여 분석에 사용해야하는 경우가 있는데 PROC TRANSPOSE를 잘 사용할 수 있다면 큰 도움이 될거라 생각한다.

 

반응형

댓글