---
title: "Домашнее задание №5"
subtitle: "ФББ - R - 2023"
author: "Анна Валяева"
output: html_document
---

```{r setup, include=FALSE}
# Настройки для отображения графиков в документе
knitr::opts_chunk$set(fig.align = 'center', out.width='60%', dpi = 300)

# Подгрузим tidyverse
library(tidyverse)

# Задать тему ggplot для всех графиков документа (можно изменить)
theme_set(theme_minimal())
```


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

## Инструкция

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

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

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

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

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

Присылать заполненные .Rmd тетрадки и .html файл необходимо через [гугл-форму](https://docs.google.com/forms/d/e/1FAIpQLSecJOGNwKHx8oulMGLg-vv-x9RP9vdiKbnP09gyToOxg7m5tA/viewform?usp=sf_link){target="_blank"}.


## Задание 1

### Задание 1.1

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

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

```{r}

```


### Задание 1.2

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

```{r}
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))
```

```{r}

```


## Задание 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 зеленым.

```{r}

```


## Задание 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")`) и названия категорий промышленности в легенде (чтобы было более приятно читать).

```{r}

```


## Задание 4

### Задание 4.1

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

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

```{r}

```


### Задание 4.2

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

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

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

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

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

```{r}

```


### Задание 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)}$. Поэкспериментируйте и с другими вариантами отображения этих подписей.

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

```{r}

```


### Задание 4.4

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

```{r}

```


## Задание 5

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

### Задание 5.1

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

```{r}

```


### Задание 5.2

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

```{r}

```


### Задание 5.3

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

```{r}

```


### Задание 5.4

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

```{r}

```


### Задание 5.5

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

```{r}

```
