박스 플롯
여러 분포를 한눈에 비교하는 가장 간편한 방법 중 하나가 박스 플롯입니다. 이 코드를 활용하면 여러 박스 플롯을 만들어 간결한 시각 자료를 완성할 수 있습니다.
이 연습 문제에서는 all_book_polarity 객체가 이미 로드되어 있습니다. 이 데이터 프레임은 book과 polarity 두 열로 구성되며, qdap의 polarity() 함수를 적용한 모든 도서 데이터를 포함합니다. 아래는 이 대형 객체의 첫 3개 행입니다.
| book | polarity | |
|---|---|---|
| 14 | huck | 0.2773501 |
| 22 | huck | 0.2581989 |
| 26 | huck | -0.5773503 |
이 연습 문제에서는 비정형 배열(ragged array)에 함수를 적용할 수 있는 tapply()를 소개합니다. 값 벡터와 요인(factor) 벡터를 입력하면, 각 요인과 값의 조합에 대해 세 번째 매개변수로 지정한 함수(예: min())가 적용됩니다. 아래는 두 벡터에 tapply()를 사용한 예시 코드입니다.
f1 <- as.factor(c("Group1", "Group2", "Group1", "Group2"))
stat1 <- c(1, 2, 1, 2)
tapply(stat1, f1, sum)
결과는 배열로 반환되며, Group1의 값은 2(1+1), Group2의 값은 4(2+2)입니다.
이 연습은 강의의 일부입니다
R을 활용한 감성 분석
연습 안내
- 이미 로드된
all_book_polarity를str()로 살펴보세요. tapply()에all_book_polarity$polarity,all_book_polarity$book,summary()함수를 차례로 전달하세요. 이렇게 하면 4개 도서의polarity()점수에 대한 요약 통계가 출력됩니다. Oz와 Huck Finn의 평균이 Agamemnon이나 Moby Dick보다 높게 나올 것으로 예상됩니다. 중앙값(median)을 유심히 살펴보세요.ggplot()에all_book_polarity를 전달하여 박스 플롯을 만드세요.- 심미 요소(aesthetics)는
aes(x = book, y = polarity)로 설정하세요. +를 사용하여col = "darkred"를 지정한geom_boxplot()을 추가하세요. 각 박스 안의 중앙값을 나타내는 굵은 선을 주의 깊게 살펴보세요.- 다음으로
geom_jitter()레이어를 추가하여 각 단어에 해당하는 점을 표시하세요.
- 심미 요소(aesthetics)는
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Examine
___
# Summary by document
___
# Box plot
ggplot(___, aes(x = ___, y = ___)) +
___(fill = c("#bada55", "#F00B42", "#F001ED", "#BA6E15"), col = "___") +
___(position = position_jitter(width = 0.1, height = 0), alpha = 0.02) +
theme_gdocs() +
ggtitle("Book Polarity")