더북(TheBook)

분할표 작성

분할표를 작성하는 함수에는 table( ), xtabs( )가 있다. table( )은 ‘7.2.3 최빈값’ 절에서 보인 바 있다. 여기서는 xtabs( )를 주로 살펴본다.

표 7-9 분할표

xtabs : 포뮬러를 사용해 분할표를 작성한다.

xtabs(
  formula,  # L1 ~ R1 + R2 + R3 형태의 포뮬러다. R1, R2, R3 등은 분할표의 분류를
            # 나타내는 변수들이다. "~"의 왼쪽에 빈도를 나타내는 변수를 적을 수 있다.
  data,     # 포뮬러를 적용할 데이터
)

반환 값은 분할표다.

다음은 table( )을 사용해 주어진 벡터에서 a, b, c의 출현 횟수를 세는 간단한 예다.

> table(c("a", "b", "b", "b", "c", "c", "d"))
a b c d
1 3 2 1

xtabs( )는 포뮬러를 사용해 데이터를 지정할 수 있다. 예를 들어, x, y라는 두 변수가 있고 (x, y)에 대한 도수가 num에 저장되어 있을 때, 이 데이터로부터 분할표를 만드는 포뮬러는 num ~ x + y다. 다음은 이 포뮬러를 사용해 분할표를 작성하는 예다.

> d <- data.frame(x=c("1", "2", "2", "1"),
+                 y=c("A", "B", "A", "B"),
+                 num=c(3, 5, 8, 7))
> (xtabs(num ~ x + y, data=d))
   y
x  A B
 1 3 7
 2 8 5

만약 도수를 나타내는 컬럼이 따로 없고, 각 관찰 결과가 서로 다른 행으로 표현되어 있다면 ‘~ 변수 + 변수 …’ 형태로 포뮬러를 작성한다. 다음 코드는 x 값이 A 또는 B인 각 경우의 수를 세는 예를 보여준다.

> (d2 <- data.frame(x=c("A", "A", "A", "B", "B")))
  x
1 A
2 A
3 A
4 B
5 B
> (xtabs(~ x, d2))
x
A B
3 2
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.