Домашнее задание №5

ФББ - R - 2023

Автор

Анна Валяева

Дата публикации

29 сентября 2023 г.

Дедлайн - 15 октября 2023 23:59

Инструкция

При выполнении заданий используйте средства пакета tidyverse.

Обратите особое внимание на оформление домашнего задания и правила, озвученные на занятии.

Приводите весь код, который вам понадобился для получения ответа.

В файле приведены примеры графиков, которые вы должны получить в задании. Точно воспроизводить их не нужно, они нужны на случай, если вы запутаетесь в задании.

На основании заполненного .Rmd файла создайте .html файл.

Присылать заполненные .Rmd тетрадки и .html файл необходимо через гугл-форму.

Задание 1

Задание 1.1

Ваш коллега собрал данные о том, сколько людей появилось на своих рабочих местах в лаборатории за прошедшую неделю. Давайте изобразим эти данные в виде столбчатой диаграммы. Подпишите график, оси, добавьте цвета, поиграйте с дизайном. Обратите внимание, что дни недели на графике должны идти в правильном порядке (постарайтесь добиться этого самым кратким способом).

lab_people <- tibble(
  day = c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"),
  n_people = c(3, 1, 11, 2, 5, 1, 0))

Задание 1.2

Соседней лаборатории понравился эксперимент вашего коллеги и они тоже решили собрать данные о количестве людей на рабочих местах в разные дни. Теперь у вас есть данные из двух лабораторий, давайте их визуализируем на одном графике с помощью столбчатой диаграммы. Подпишите график, оси, добавьте цвета, поиграйте с дизайном. Дни недели на графике должны быть указаны в правильном порядке.

lab_people2 <- tibble(
  lab = c("Great R Visualizations Lab", "The Neighbour's Lab"),
  Monday = c(3, 5),
  Tuesday = c(1, 9),
  Wednesday = c(11, 7),
  Thursday = c(2, 4),
  Friday = c(5, 5),
  Saturday = c(1, 4),
  Sunday = c(0, 1))

Задание 2

Прочитайте датасет про исчезнувшие виды растений по ссылке https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-08-18/plants.csv.

Изучите датасет!

Что в нем есть:

  • binomial_name - название вида растения,
  • country - страна произрастания,
  • continent - континент произрастания,
  • group - таксономическая группа (Цветковое растение - Flowering plant, и т.д.),
  • year_last_seen - период, когда было замечено в природе последний раз,
  • threat_ и action_ - виды угроз и действий по сохранению вида,
  • red_list_category - категория в Красной книге: Extinct или Extinct in the Wild.

Больше информации о датасете по ссылке: https://github.com/rfordatascience/tidytuesday/blob/master/data/2020/2020-08-18/readme.md.

Постройте столбчатую диаграмму числа исчезнувших видов цветковых растений и не-цветковых растений на каждом континенте.

Пояснения:

  • В колонке group оставьте группу Flowering plants (цветковые растения), остальные группы растений объедините в группу Non-flowering plants (не-цветковые растения). Используйте возможности пакета forcats.
  • Посчитайте число исчезнувших видов (Extinct) по каждому континенту, в каждой таксономической группе (Flowering plants и Non-flowering plants).
  • Нарисуйте группированную столбчатую диаграмму (2 отдельных столбца, для Flowering plants и Non-flowering plants, расположенные рядом). По горизонтали расположите континенты.
  • Пусть континенты будут расположены в порядке убывания количества стран на них.
  • Осмысленно подпишите оси.
  • Перенесите легенду наверх, уберите название легенды.
  • Обозначьте Flowering plants желтым и Non-flowering plants зеленым.

Задание 3

Загрузите датасет, содержащий динамику использования сои в пищевой и непищевой промышленности за несколько последних десятков лет. Ссылка для скачивания: https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2021/2021-04-06/soybean_use.csv.

Изучите датасет! Про него можно прочитать дополнительно, например, здесь: https://github.com/rfordatascience/tidytuesday/blob/master/data/2021/2021-04-06/readme.md.

Информация про датасет:

  • entity - континент, часть континента или страна,
  • code - код страны,
  • year - год,
  • human_food - сколько сои было использованно в пищевой промышленности (в тоннах),
  • animal_feed - сколько сои было использовано в производстве кормов для животных (в тоннах),
  • processed - сколько сои было использовано в непищевой промышленности (производство биотоплива и т.д.) (в тоннах).

Отберите для анализа данные только по 6 континентам: c("Africa", "Europe", "Asia", "Northern America", "South America", "Australia & New Zealand"), за 33 года - 1981-2013. Нарисуйте столбчатую диаграмму, которая бы изображала среднее количество сои по трем типам промышленности, использованной за 33 года на всех 6 обитаемых континентах. Изобразите разброс 3/4 SD (чтобы линии разброса выровнялись со столбцами, возможно, вам понадобится параметр position = position_dodge(width = 0.9)). Отсортируйте континенты по среднему количеству сои, использованной во всех областях промышленности за исследуемый период. Логарифмируйте ось Y с помощью подходящей функции scale_y_*. Измените формат числовых подписей по оси Y.

Добавьте осознанные названия осей. Поверните названия континентов, чтобы они отображались целиком, на 45 градусов. Уберите название легенды и поменяйте цвета (например, на c("#ffb4a2", "#e5989b", "#b5838d")) и названия категорий промышленности в легенде (чтобы было более приятно читать).

Задание 4

Задание 4.1

Напишите функцию, которая бы рассчитывала ядерно-цитоплазматическое соотношение (“N:C” или “karyoplasmic” ratio) по формуле \(\frac{NucleusVol}{CellVol}\), где NucleusVol - объем ядра (мкм3), CellVol - объем клетки (мкм3).

На небольшом примере продемонстрируйте работу этой функции.

Задание 4.2

Прочитайте данные по размерам ядер и клеток разных организмов из разнообразных таксономических групп, они находятся по ссылке https://raw.githubusercontent.com/kirushka/datasets/main/NC_ratio.csv. Эти данные взяты из статьи Malerba et al. 2021.

В прочитанном датафрейме 4 столбца:

  • SpeciesGroup - название таксономической группы,
  • Species - видовое название организма,
  • NucleusVol - объем ядра (мкм3),
  • CellVol - объем клетки (мкм3).

Используя функцию, которую вы создали в предыдущем задании, посчитайте ядерно-цитоплазматическое соотношение (“N:C” или “karyoplasmic” ratio) для каждого организма - запишите результат в новый столбец.

Также преобразуйте строковый столбец SpeciesGroup в столбец с факторами. Отсортируйте уровни фактора по убыванию медианного значения NC ratio.

Задание 4.3

По модифицированному датафрейму постройте точковую диаграмму, на которой по оси X отложен объем клеток, по оси Y - NC ratio, цветом показана таксономическая группа.

Добавьте на график линии тренда, построенные с помощью линейной регрессии, для каждой таксономической группы с помощью geom_smooth(method = "lm").

Чтобы использовать на графиках “математические” обозначения, греческие буквы и т.п., например, в подписях осей, можно использовать функцию expression, которой подать на вход все выражение без кавычек. Например, так: ggplot(...) + labs(x = expression(Cell~volume~(mu*m^3))).

Для настройки “tick labels”, т.е. подписей интервалов на осях, можно использовать пакет scales. Например, scale_x_log10(labels = scales::label_math(format = log10)) преобразит подписи по оси X в формат вида \(10^{log10(x)}\). Поэкспериментируйте и с другими вариантами отображения этих подписей.

Поменяйте цветовую палитру графика.

Задание 4.4

Разделите график из задания 4.3 на “панельки” с помощью facet_wrap, так чтобы каждая таксономическая группа оказалась на своем графике.

Задание 5

Напишите несколько функций для моделирования подбрасывания кубика.

Задание 5.1

Напишите функцию, которая возвращает результат подбрасывания одного “честного” шестигранного кубика. Продемонстрируйте работу функции. Нужно ли устанавливать seed?

Задание 5.2

Напишите функцию, которая возвращает результат подбрасывания двух “честных” шестигранных кубиков. Продемонстрируйте работу функции.

Задание 5.3

Напишите функцию, которая возвращает результат подбрасывания нескольких “честных” шестигранных кубиков. Число кубиков задается параметром n. Продемонстрируйте работу функции.

Задание 5.4

Напишите функцию, которая возвращает результат подбрасывания “честного” кубиков с заданным числом граней. Число граней задается параметром sides. Продемонстрируйте работу функции.

Задание 5.5

Напишите функцию, которая возвращает результат подбрасывания нескольких “честного” кубиков с заданным числом граней. Число граней задается параметром sides (пусть по умолчанию оно будет равно 6). Число кубиков задается параметром n. Продемонстрируйте работу функции.