Загрузим необходимые библиотеки
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