더북(TheBook)

다음은 breaks에 원하는 구간의 개수를 지정해 1부터 10까지의 수를 3개 구간으로 나누는 예다.

> cut(1:10, breaks=3)
 [1] (0.991,4] (0.991,4] (0.991,4] (4,7] (4,7] (4,7]
 [7] (4,7]     (7,10]    (7,10]    (7,10]
Levels: (0.991,4] (4,7] (7,10]

이러한 배경 지식을 통해 Sepal.Width를 10개 구간으로 나눠보자.

> cut(iris$Sepal.Width, breaks=10)
 [1]  (3.44,3.68] (2.96,3.2]  (2.96,3.2]  (2.96,3.2]  (3.44,3.68]
 [6]  (3.68,3.92] (3.2,3.44]  (3.2,3.44]  (2.72,2.96] (2.96,3.2]
[11]  (3.68,3.92] (3.2,3.44]  (2.96,3.2]  (2.96,3.2]  (3.92,4.16]
...
[141] (2.96,3.2]  (2.96,3.2]  (2.48,2.72] (2.96,3.2]  (3.2,3.44]
[146] (2.96,3.2]  (2.48,2.72] (2.96,3.2]  (3.2,3.44]  (2.96,3.2]
10 Levels: (2,2.24] (2.24,2.48] (2.48,2.72] (2.72,2.96] ... (4.16,4.4]

파이 그래프를 그리려면 이 팩터 데이터를 그대로 사용할 수는 없으며, 나뉜 각 구간에 몇 개의 데이터가 있는지 세야 한다. table( ) 함수는 이러한 목적으로 사용되며, 팩터 값을 받아 분할표(교차표)Contingency Table(Cross Tabulation/Cross Tab)를 만든다. 이 함수의 이용법을 이해하기 위해 여러 문자가 저장된 벡터가 있을 때 각 문자열의 개수를 세는 다음 예를 보자.

> rep(c("a", "b", "c"), 1:3)
[1] "a" "b" "b" "c" "c" "c"

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

table( ) 함수의 결과로 각 문자의 개수가 구해졌음을 볼 수 있다. 이를 응용해 Sepal.Width를 10개 구간으로 나눈 뒤 각 구간에 몇 개의 데이터가 있는지 구해보자.

> table(cut(iris$Sepal.Width, breaks=10))
(2,2.24] (2.24,2.48] (2.48,2.72] (2.72,2.96] (2.96,3.2] (3.2,3.44]
       4           7          22          24         50         18
(3.44,3.68] (3.68,3.92] (3.92,4.16] (4.16,4.4]
         10          11           2          2

‘7.4 분할표’ 절에서 table( ) 함수에 대해 더 자세히 다루기로 하고, 여기서는 지금까지 구한 값을 사용해 파이 그래프를 그려보자.

> pie(table(cut(iris$Sepal.Width, breaks=10)))
그림 6-38 iris$Sepal.Width 값의 구간별 비율
그림 6-38 iris$Sepal.Width 값의 구간별 비율
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.