R에서 data.frame에서 table로 변환하기

chchch·2021년 10월 18일
0

통계학

목록 보기
3/3

통계학에서 데이터를 가지고 검정을 해야할 경우가 많다. 독립성 검정이나 CMH 검정을 하려면 table 형식으로 변경해야할 때가 있다. 알아두면 편한 몇 가지 팁을 정리해본다.


data.frame에서 table로 변환하기

기본적으로 R\textsf{R}에서 gmodels\textsf{gmodels} 패키지가 table을 자세하게 보여주기 때문에 활용하면 좋다. 실습은 기본 base\textsf{base} 함수를 사용하겠다. 만약 다음과 같은 표가 있다고 하자.

그림 출처: Agresti, Categorical Data Analysis

먼저 필요한 패키지를 부르자.

library(dplyr)
library(gmodels)

위와 같은 표가 있을 때, data.frame\textsf{data.frame} 함수를 통해 data.frame 형식으로 표현할 수 있다.

dp_df = data.frame(victim = c("W", "W", "W", "W", "B", "B", "B", "B"), 
           def=c("W", "W", "B", "B", "W", "W", "B", "B"),
           dp = c("Y", "N", "Y", "N", "Y", "N","Y", "N"),
           freq = c(53, 414, 11, 37, 0, 16, 4, 139))
      

관측치로 정리된 data.frame

하지만 흔히 관측치로 기록된 data.frame의 형태를 사용하는 경우가 더 많다.

tidy_dp_df = as.data.frame(lapply(dp_df, rep, dp_df$freq))[, 1:3]

tidy_dp_df %>% head()

관측치로 정리된 data.frame

관측치로 된 data.frame이 있는 경우

변수가 3개여서 우리가 2×2×22\times 2 \times 2 Table이 필요하다. table\textsf{table} 함수를 사용하여 주변부 표(marginal table)을 쉽게 확인할 수 있다. 변수를 직접 적지 않으면 data.frame에서 마지막 열 변수를 조절 변수(control variable)를 사용하여 표를 만든다.

table(tidy_dp_df) ### dp를 조절 변수로 하여 table을 만듬
table(tidy_dp_df$victim, tidy_dp_df$dp, tidy_dp_df$def) ### def를 조절 변수로 하여 table을 만듬

def를 조절 변수로 하여 table을 만든 경우

빈도(freqeuncy)가 있는 data.frame이 있는 경우

처음에는 빈도가 있는 data.frame이 쉬울 것 같다고 생각했는데 table\textsf{table} 함수로 쉽게 만들 수 없었다. 대안으로 xtabs\textsf{xtabs} 함수를 사용하여 주변부 표(marginal table)을 쉽게 확인할 수 있다. formula 형태로 table을 구성할 수 있는데 일반적으로 "빈도 ~ 변수1 + 변수2 + 조절 변수" 의 형태이다.


xtabs(freq ~ victim + dp + def, data=tidy_dp_df)

xtabs 함수를 사용하여 def를 조절 변수로 하여 table을 만든 경우

profile
머신러닝과 통계학을 공부하는 사람

0개의 댓글