Ящичная диаграмма
Удобный способ сравнить несколько распределений — ящичная диаграмма (box plot). С помощью этого кода вы построите несколько таких диаграмм в компактном визуальном представлении.
В этом упражнении объект all_book_polarity уже загружен. Фрейм данных содержит два столбца: book и polarity. В него входят все книги, к которым применена функция polarity() из пакета qdap. Ниже приведены первые 3 строки объекта.
| book | polarity | |
|---|---|---|
| 14 | huck | 0.2773501 |
| 22 | huck | 0.2581989 |
| 26 | huck | -0.5773503 |
В этом упражнении вы познакомитесь с функцией tapply(), которая позволяет применять функции к неравномерно распределённым массивам. Вы передаёте вектор значений и вектор факторов — для каждой комбинации «фактор–значение» применяется третий параметр, например функция 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(). Ожидается, что у «Волшебника страны Оз» и «Приключений Гекльберри Финна» средние значения будут выше, чем у «Агамемнона» или «Моби Дика». Обратите особое внимание на медиану. - Постройте ящичную диаграмму с помощью
ggplot(), передавall_book_polarity.- В качестве эстетики укажите
aes(x = book, y = polarity). - С помощью
+добавьтеgeom_boxplot()с параметромcol = "darkred". Обратите особое внимание на тёмную линию в каждом прямоугольнике — она обозначает медиану. - Затем добавьте ещё один слой —
geom_jitter()— чтобы отобразить точки для каждого слова.
- В качестве эстетики укажите
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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")