Срок сдачи: 7 июня 2019, 23:59
Формат сдачи: Результат выполнения домашнего задания 5: файл с расширением .Rmd
(заполненный шаблон со страницы курса). Этот файл нужно загрузить по ссылке.
В этом задании вам предлагается поработать с базами данных, в которых сохранена информация о том, как называли детей в Москве 2015 – 2017 годах. Данные взяты с Портала открытых данных, сведения о наиболее популярных мужских/женских именах среди новорожденных.
Вам предложены два датасета boys.csv и girls.csv, содержащие следующие переменные:
Name
: имя;
NumberOfPersons
: число детей, названных этим именем;
Year
: год;
Month
: месяц.
Загрузите базы данных boys.csv
и girls.csv
. Обратите внимание на кодировку и разделитель столбцов + считайте, что текстовые переменные должны считываться как текст, а не как факторы (аргумент stringsAsFactors
).
Используя библиотеку dplyr
, создайте в базах имен столбец gender
(тип factor
), все значения которого равны “M” (для базы имен мальчиков) или “F” (для базы имен девочек). Соедините две базы имен по строкам и сохраните результат в переменную total
. Подсказка: функция rbind()
.
Даны два вектора имен:
G <- c("Анастасия", "Валентина", "Дарья", "Евгения", "Елизавета", "Ирина", "Камила", "Полина", "Светлана", "Юлия")
B <- c("Андрей", "Артём", "Александр", "Всеволод", "Даниил", "Денис", "Игорь", "Илья", "Кирилл", "Никита", "Сергей")
Выберите из базы данных total
строки, соответствующие этим именам, сохраните результат в переменную small
.
В этом задании вам нужно будет визуализировать динамику популярности имен в течение двух лет. Для построения линейного графика (line plot) вам потребуется создать временную шкалу – склеить и преобразовать столбцы Year
и Month
:
library(zoo) # для функции as.yearmon()
small <- small %>% mutate(date = paste(Year, Month, sep = "-"))
small <- small %>% mutate(date = as.Date(as.yearmon(date, "%Y-%b")))
Если библиотека zoo
не установлена, установите ее. Создайте столбец date
, используя код выше. Посмотрите на него, определите его тип.
Постройте с помощью библиотеки ggplot2
линейный график (line plot), такой, чтобы по нему можно было определить динамику популярности имен девочек и мальчиков (временную шкалу мы уже создали в date
). При этом постройте графики для женских и мужских имен в отдельных ячейках. Подсказка: график на этом этапе должен выглядеть примерно так.
Сделайте линии, соответствующие разным именам, разного цвета (более контрастно, чем цвета R по умолчанию, потому что радужный спектр R не всегда позволяет увидеть различия в похожих цветах).
Поправьте шкалу по оси x
таким образом, чтобы на оси были отметки времени через каждые 6 месяцев (см. help для слоя scale_x_date
), причем формат даты должен быть “номер месяца-год полностью” (например, “01-2015”). Подсказка: чтобы понять, каким образом выставить нужный формат даты, поиграйте с аргументом date_labels
внутри scale_x_date
. Другими словами, поподставляйте разные варианты: “%m-%y”, “%m-%Y”, “%b-%y”, “%b-%Y”. И определите, что вам подходит.
Поверните подписи на оси x
на 60 градусов, чтобы даты не накладывались друг на друга. Подсказка: слой theme()
и аргумент axis.text.x = element_text()
в нем.
На основе отчета Deloitte о потребительских расходах в зимние праздники 2017, была составлена база данных ny_gifts.csv
. Описание переменных:
gift: подарок, который потребители хотят получить/покупают другим
perc: процент потребителей, которые хотят получить этот подарок/покупают другим
type: тип подарка, dream – потребители желают получить, real – потребители покупают
both: тип подарка, 0 – либо потребители хотят его получить, либо покупают в подарок другим, 1 – хотят получить и покупают сами
Пояснение: в базе данных есть строки
[gift perc type both]
[Money 67 dream 1]
[Money 32 real 1]
[Cooking accessories 18 real 0]
Это означает, что 67% респондентов сказали, что хотели бы получить деньги на Новый год, а 32% респондентов сообщили, что дарят деньги на Новый год. И поэтому both = 1
: деньги хотят дарить и хотят получать. 18% респондентов сказали, что они покупают кухонные принадлежности в подарок, а вот получать их никто не мечтает (неизвестно, конечно, насколько “никто”, процент маленький - его просто нет в отчете). Здесь both = 0
: подарок дарят, но не очень хотят получать.
Постройте с помощью ggplot2
парную столбиковую диаграмму, такую, чтобы по ней можно было сравнить, сколько процентов людей хотели получить какие-то вещи на Новый год, с тем, сколько процентов людей покупают эти же вещи в подарок на Новый год. Если не совсем понятно, что ожидается, см. примеры так называемых dodged barplots здесь, раздел Barplot with multiple groups.
Указания:
Оставьте в базе только те подарки, которые потребители одновременно хотят получить и покупают сами. Для каждого подарка должно быть построено два столбца: сколько процентов респондентов мечтают его получить и сколько процентов респондентов его дарят.
Для того, чтобы значения в столбце perc
воспринимались как уже готовые частоты (проценты), в geom_bar()
нужно выставить параметр stat = "identity"
. Иначе R будет считать частоты “заново”, то есть определять, сколько в столбце значений 67, 32 и так далее.