Загрузим необходимые библиотеки

library(tidyverse)
## Warning: пакет 'tidyverse' был собран под R версии 4.3.3
## Warning: пакет 'ggplot2' был собран под R версии 4.3.3
## Warning: пакет 'tibble' был собран под R версии 4.3.3
## Warning: пакет 'tidyr' был собран под R версии 4.3.3
## Warning: пакет 'readr' был собран под R версии 4.3.3
## Warning: пакет 'purrr' был собран под R версии 4.3.3
## Warning: пакет 'dplyr' был собран под R версии 4.3.3
## Warning: пакет 'forcats' был собран под R версии 4.3.3
## Warning: пакет 'lubridate' был собран под R версии 4.3.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.0     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(nycflights13)
## Warning: пакет 'nycflights13' был собран под R версии 4.3.3

Для каждого направления посчитаем пройденное расстояние

flights %>%
  group_by(dest) %>%
  summarise(total_distance = sum(distance))
## # A tibble: 105 × 2
##    dest  total_distance
##    <chr>          <dbl>
##  1 ABQ           463804
##  2 ACK            52735
##  3 ALB            62777
##  4 ANC            26960
##  5 ATL         13033618
##  6 AUS          3693263
##  7 AVL           160485
##  8 BDL            51388
##  9 BGR           141750
## 10 BHM           257201
## # ℹ 95 more rows

Перекодируем переменную Month, чтобы выводилось название месяца

recode_month <- function(month_num) {
  month_names <- c("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь")
  return(month_names[month_num])
}
flights <- flights %>% 
  mutate(month = recode_month(month))

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

flights$air_time_hours <- flights$air_time / 60
print (flights)
## # A tibble: 336,776 × 20
##     year month    day dep_time sched_dep_time dep_delay arr_time sched_arr_time
##    <int> <chr>  <int>    <int>          <int>     <dbl>    <int>          <int>
##  1  2013 Январь     1      517            515         2      830            819
##  2  2013 Январь     1      533            529         4      850            830
##  3  2013 Январь     1      542            540         2      923            850
##  4  2013 Январь     1      544            545        -1     1004           1022
##  5  2013 Январь     1      554            600        -6      812            837
##  6  2013 Январь     1      554            558        -4      740            728
##  7  2013 Январь     1      555            600        -5      913            854
##  8  2013 Январь     1      557            600        -3      709            723
##  9  2013 Январь     1      557            600        -3      838            846
## 10  2013 Январь     1      558            600        -2      753            745
## # ℹ 336,766 more rows
## # ℹ 12 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
## #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
## #   hour <dbl>, minute <dbl>, time_hour <dttm>, air_time_hours <dbl>

Установим неоходимые библиотеки для работы с набором пингвины

library(palmerpenguins)
## Warning: пакет 'palmerpenguins' был собран под R версии 4.3.3

Сгруппируем пингвинов по полу и виду, а также вычислим среднюю длину их клюва

avg_bill_length <- penguins %>%
  group_by(species, sex) %>%
  summarise(avg_bill_length_mm = mean(bill_length_mm, na.rm = TRUE))
## `summarise()` has grouped output by 'species'. You can override using the
## `.groups` argument.
wide_format <- avg_bill_length %>%
  pivot_wider(names_from = sex, values_from = avg_bill_length_mm)

Удалим пропущенные значения и выведем результат

wide_format <- wide_format %>% 
  filter(!is.na(male), !is.na(female))
print(wide_format)
## # A tibble: 3 × 4
## # Groups:   species [3]
##   species   female  male  `NA`
##   <fct>      <dbl> <dbl> <dbl>
## 1 Adelie      37.3  40.4  37.8
## 2 Chinstrap   46.6  51.1  NA  
## 3 Gentoo      45.6  49.5  45.6