본문 바로가기
컴퓨터/엑셀관련

피벗 테이블

by adnoctum 2011. 4. 6.


   피벗 테이블은, 만들고자 하는 데이터가 테이블 형태인데, 갖고 있는 데이터는 테이블의 열과 행이 될 데이터가 모두 열로 되어 있을 때 그것을 테이블로 만들 수 있는 방법을 지칭한다. 다시 말해, 하나의 열은 행, 또 다른 열은 열, 다른 열은 값, 으로 되어 있는 데이터를 테이블 형태로 재구성하는 방법을 지칭한다. 그림으로 표현해 보자면 다음과 같다.




엑셀에선 지정된 행과 열이 같은 값의 목록에 대하여 여러 함수를 지정해서 '값'으로 지정할 수 있게끔 되어 있다. 즉, (1,a) 에 해당하는 값이 10개가 있었다고 하면 그 값의 '평균'을 테이블로 만든다던가, '합계'를 테이블로 만들 수가 있게 되어 있다. 만드는 방법은 어렵지 않다. 다음과 같다.

우선 피벗 테이블로 만들 데이터를 전체 선택하고, Insert --> Pivot Table 을 선택한다.




그러면 어느 부분을 피벗 테이블로 만들 것인지, 만든 피벗 테이블을 새로운 sheet 에 넣을 것인지 등등에 대한 다음과 같은 옵션이 나타난다. 적당히 선택하고 OK 를 누른다.



그러면 결과로 다음과 같이 횡한 화면이 나타난다. A 에 있는 각각의 컬럼들을, 만들어질 테이블의 '행'으로 쓸 것인지 '열'로 쓸 것인지, 값으로 쓸 것인지 등을 B 쪽으로 끌어다 놓으면 되는 것이다.




나의 경우 GSEID라 되어 있는 열을 행의 요소로, ClusterName 으로 되어 있는 열을 열의 요소로 사용할 것이기 때문에 다음과 같이 끌어다 놓았다.



그 후, 값으로 사용할 msig-res emp.p 라는 열을 '값'으로 되어 있는 곳에다 끌어다 놓는다.




그러면 기본으로는 '합계' 또는 '개수'가 '값'의 요소로 나온다. 만약 이것을 바꾸고 싶으면 위처럼 Value Field Settings... 를 눌러서 다음과 같은 창이 나오게 한다.



나의 경우, 각 위치에 들어갈 요소가 정확히 1개 이고, 그 값을 '값'의 요소로 사용해야 하므로 '합계'를 선택한다. 왜냐 하면, 1개밖에 없기 때문이다. 이 부분이 조금 의아할 수도 있는데, 만약 만들어질 테이블의 (1,a) 위치에 해당하는 요소가 10 개가 있었다고 하면 그 값들의 적당한 함수를 지정하는 것이다.

여하튼 위처럼 해서 끝내면 다음과 같은 테이블이 만들어 진다.




어렵지 않다.




   만약 프로그래밍을 하는 학생이라면 위의 기능을 하는 작은 프로그램을 만들어 볼 것을 권한다. 쓸모도 있으면서 규모도 매우 작은, 아주 좋은 예제이다. 물론 GUI 들어가면 지저분해지니까 command line (console) 용으로 만들어 보면 좋다. 난 좀 큰 데이터를 리눅스에서 자주 다루기 때문에 위 내용을 직접 구현해 사용하는데, 진리의 STL 덕분에 코드가 100 줄도 안된다.

(위의 msig-res emp. p 는 resampling 을 이용한 empirical p-value 이다. 뭐, log-rank test해서 얻은 p-value가 과연 얼마나 맞나 해서 해보는 것인데, 이런 test 들은 언제나 모분포의 가정 때문에 그냥 가져다 쓰기 좀 꺼림찍해서 위처럼 해봤다. 역시나, analytic하게 얻은 p-value는 좀 over-estimation 된 값이군)