다음은 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)))