Вы находитесь на странице: 1из 5

---

title: "Домашнее задание №2"


subtitle: "ФББ - R - 2023"
output: html_document
---

**Дедлайн - 28 сентября 2023 23:59**

![](assets/fish/02_clownfish_r_hex.png){width=10% fig-align="center"}

***

На занятии мы кратко познакомились и установили коллекцию пакетов Tidyverse.

Работу с data.frame вы уже изучили, так что осталось немножко посмотреть на


синтаксис Tidyverse - будем работать с пакетом ``dplyr``. Можете искать информацию,
например, через Help в RStudio или
[тут](https://dplyr.tidyverse.org/reference/index.html).

Все задания решайте с помощью средств пакета ``dplyr``, если не указано обратное.

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


занятии.

Ориентируйтесь на файл с примером *test.Rmd*

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

Не забывайте класть результаты в отдельные переменные, результат одного задания


может быть нужен для решения другого задания.

Решение каждого задания должно позволять проверить корректность манипуляций без


дополнительных действий со стороны преподавателя. Пример: в задании просят создать
вектор; после выполнения соответствующей команды выведите получившейся вектор (или
его начало, если вектор длинный) в явном виде, чтобы продемонстрировать результат.
Обратите внимание на функции *head()* и *tail()*

НЕ НУЖНО в отчете выводить полностью длинные вектора, матрицы и пр. Это будет
штрафоваться

В некоторых заданиях логично было бы вывести сначала объект (или его часть) ДО
манипуляций, а затем ПОСЛЕ, чтобы продемонстрировать, что манипуляция совершена и
совершена верна

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

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


(https://forms.gle/DHMSNKAYLqXMr3pi6)

***

### Задание №1

Воспользуйтесь набором данных **nycflights** из пакета *openintro*.

Примените к данным *nycflights* функцию ``glimpse()``.

С помощью ``glimpse()`` можно получить сводку о данных, аналог ``str()``.


Выведите результат полностью.

### Задание №2

Есть ли в данных *nycflights* пропущенные значения?

Используя функции базового R выведите сумму пропущенных значений в наборе данных.

### Задания №3

Для фильтрации строк по условию используйте функцию ``filter()``.

~~Будет в самостоятельной работе~~

Отберите из набора данных *nycflights* июньские (столбец month) рейсы, которые


вылетели (столбец origin) из аэропорта JFK и прилетели (столбец dest) в аэропорты
LAX или ROC. Выполните фильтрацию за одну команду. Покажите, что вы точно отобрали
только нужные аэропорты.

Сколько рейсов подходят под условия?

### Задание №4

Для выбора колонок по индексу и имени используйте функцию ``select()``

Давайте начнем с индексов.

Воспользуйтесь подвыборкой рейсов, полученных в задании №3.

Отберите наиболее оптимальным способом первую, вторую, третью, одиннадцатую и


двенадцатую колонки.

Не забывайте демонтрировать корректность решения!!

### Задание №5

Теперь отберем колонки по имени.

~~Будет в самостоятельной работе~~

Воспользуйтесь подвыборкой рейсов, полученных в задании №3.

Удалите колонку с аэропортами, куда прилетали рейсы.

### Задание №6

Не всегда можно и нужно перечислять в явном виде индексы или имена колонок для
фильтрации.

Оставлять или удалять колонки можно на основании общих аттрибутов в их названиях.

Воспользуйтесь подвыборкой рейсов, полученных в задании №4.

Оставьте только колонки, иена которых начинаются с буквы ``d``. Примените связку
``select()`` + ``starts_with()``

### Задание №7
Необходимый паттерн в названии колонки не обязательно находится в начале названий.

Воспользуйтесь подвыборкой рейсов, полученных в задании №4.

Оставьте только такие колонки, которые в названии содержат "_" в любом месте.
Примените связку ``select()`` + ``contains()``

### Задание №8

Отбирать строки по позициям можно с помощью функции ``slice()``

Воспользуйтесь подвыборкой рейсов, полученных в задании №4.

Отберите первую, пятую и десятую строки.

### Задание №9

Для вывода шапки набора данных можно использовать, например, функцию


``slice_head()``, аналог функции ``head()`` из базового R.

Отберите первые 8 строк из полного набора данных *nycflights*.

### Задание №10

Очень полезно уметь отбирать случайным образом строки из набора данных.

Функция ``slice_sample()`` помогает это сделать разными способоами.

Выберите случайным образом 10 строк из полного набора данных *nycflights*.

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

### Задание №11

Отберите случайным образом 10% строк из набора данных *nycflights*.

Для выполнения задания исследуйте параметры функции ``slice_sample()``.

### Задание №12

Обратите внимание на параметр ``weight_by`` функции ``slice_sample()``.

Для чего он нужен? Продемонстрируйте его работу на любом примере.

### Задание №13

Воспользуйтесь подвыборкой рейсов, полученных в задании №4.

Выберите столбец tailnum двумя способами: с помощью функций ``pull()`` и


``select()``.

В чем разница?

### Задание №14

С помощью функции ``arrange()`` можно отсортировать данные по одному или нескольким


столбцам по убыванию ли возрастанию.

Воспользуйтесь подвыборкой рейсов, полученных в задании №4.


Отсортируйте набор данных по столбцу day по убыванию.

### Задание №15

Добавить новый столбец к набору данных можно с помощью функции ``mutate()``.

Новый столбец может быть результатом различных манипуляций, проведенных с уже


существующими столбцами.

Воспользуйтесь подвыборкой рейсов, полученных в задании №4.

Добавьте к данным столбец YMD, который представляет собой слияние столбцов year,
month, day вида: year_month_day (пример: 2023_9_18).

### Задание №16

С помощью функции ``transmute()`` можно создать новые колонки, удалив при этом все
колонки, которые были раньше.

Воспользуйтесь исходными данными *nycflights*.

Создайте и оставьте только колонки:

- YMD: аналогичная описанной в задании №15

- dep_delay_abs: абсолютные значения колонки dep_delay

- arr_delay_abs: абсолютные значения колонки arr_delay

### Задание №17

Переименовать колонки можно с помощью функции ``rename()``.

Воспользуйтесь исходными данными *nycflights*.

Переименуйте колонку dep_delay в Departure_delays_min.

### Задание №18

Переименовать колонки можно, применив к названиям какую-то единообразную операцию.

Это можно сделать с помощью функции ``rename_with()``.

Воспользуйтесь подвыборкой рейсов, полученных в задании №4.

Сделайте все буквы в названиях всех колонок заглавными.

### Задание №19

Оставить только уникальные строки в наборе данных или в конкретном столбце можно с
помощью функции ``distinct()``.

Воспользуйтесь исходными данными *nycflights*.

Выведите только уникальные значения столбца dest.

### Задание №20


``n()`` - выводит число записей.

Отберите последние 10 строк из набора данных *nycflights*, используя функцию


``n()``.

### Задание №21

Воспользуйтесь полным набором данных *nycflights*.

С помощью средств базовой графики визуализируйте количество рейсов в каждом месяце.

Подпишите оси и название графика.

### Задание №22

Воспользуйтесь полным набором данных *nycflights*.

С помощью средств базовой графики визуализируйте распределение времени задержки


прибытия рейса (столбец arr_delay).

Подпишите оси и название графика.

### Задание №23

Воспользуйтесь полным набором данных *nycflights*.

С помощью средств базовой графики изобразите точковую диаграму времени задержки


отправления от задержки прибытия рейсов. Добавьте окрашивание по месяцам.

Подпишите оси и название графика.

### Задание №24

Решите задание №3 с помощью базового R.

### Задание №25

Решите задание №15 с помощью базового R.

***

~~на самостоятельной работе будет задание на фильтрацию таблицы по строкам и


столбцам средствами tidyverse, но я вам снова ничего не говорила~~

Вам также может понравиться