앞글에서는 ggplot2의 기본 기능을 이용하여 식단별 닭 50마리의 체중 변화에 대한 그래프를 그려보았습니다.
--------------------------------------------------------------------------------------
이번에는 aggregate 함수의 기능에 대해서 간단하게 알아보겠습니다.
먼저 4개의 식단이 있다고 말씀드렸는데 각 식단이 적용된 닭들의 평균 체중을 알고 싶을 때가 있을 것입니다.
그럴 때는 아래 명령어를 사용하면 됩니다.
결과값을 보시면 식단이 diet 항목으로 4개로 구분되어 있습니다. 각 식단별 평균 체중은 x로 확인할 수 있네요.
# find the mean weight depending on diet
aggregate
(data$weight,
list
(diet = data$Diet), mean)
diet x
1 1 102.6455
2 2 122.6167
3 3 142.9500
4 4 135.2627
측정 일자별 체중의 평균은 아래 명령어를 사용하면 됩니다.
# aggregate on time
aggregate
(data$weight,
list
(time = data$Time), mean)
time x
1 0 41.06000
2 2 49.22000
3 4 59.95918
4 6 74.30612
5 8 91.24490
6 10 107.83673
7 12 129.24490
8 14 143.81250
9 16 168.08511
10 18 190.19149
11 20 209.71739
12 21 218.68889
함수의 제일 마지막에 들어가는 인자를 sd로 바꾸면 일자별 체중의 표준 편차를 구할 수 있습니다.
닭들이 자랄수록 체중의 평균이 커지는 것은 당연하지만 표준편차가 같이 커지는 것이 흥미롭네요.
aggregate 함수는 전체 데이터를 통해서는 보지 못하는 것들을 정리해서 보여주므로 데이터 내부의
의미 있는 관계를 알아보는데 좋을 것 같습니다.
# use a different function
aggregate
(data$weight,
list
(time = data$Time), sd)
time x
1 0 1.132272
2 2 3.688316
3 4 4.495179
4 6 9.012038
5 8 16.239780
6 10 23.987277
7 12 34.119600
8 14 38.300412
9 16 46.904079
10 18 57.394757
11 20 66.511708
12 21 71.510273
--------------------------------------------------------------------------------------
만약에 time과 diet별 체중의 평균을 한 번에 보고 싶다며 아래 명령어를 사용하면 됩니다.
좀 더 세밀하게 데이터 내부의 관계를 살펴볼 수 있겠네요.
# we could also aggregate on time and diet
head
(
aggregate
(data$weight,
list
(time = data$Time, diet = data$Diet),
mean)
)
time diet x
1 0 1 41.40000
2 2 1 47.25000
3 4 1 56.47368
4 6 1 66.78947
5 8 1 79.68421
6 10 1 93.05263
head와 tail 명령어로 앞뒤 5개의 내용만 확인 할 수 있습니다.
tail
(
aggregate
(data$weight,
list
(time = data$Time, diet = data$Diet),
mean)
)
time diet x
43 12 4 151.4000
44 14 4 161.8000
45 16 4 182.0000
46 18 4 202.9000
47 20 4 233.8889
48 21 4 238.5556
--------------------------------------------------------------------------------------
ggplot2의 facet_wrap 기능을 이용하여 식단별로 그래프를 나눌 수도 있습니다.
geom_line 함수의 x 인자에는 체중 측정 일자, y 인자에는 체중을 넣습니다.
colour 인자는 그래프의 색상과 관련된 것인데 여기에 Chick를 넣으면 50마리마다 다른
색상으로 그래프를 그려줍니다.
facet_wrap에 Diet를 넣으면 식단별로 그래프를 나눠주고 상단에 1, 2, 3, 4와 같은 라벨도
추가해주는 것을 볼 수 있습니다.
guides는 50마리의 닭마다 사용된 그래프의 색상 정보를 오른쪽 부분에 나타내줍니다.
#to see the weights over time across different diets
ggplot
(data) +
geom_line
(
aes
(x = Time, y = weight, colour = Chick)) +
facet_wrap
(~Diet) +
guides
(col =
guide_legend
(ncol = 3))