options(repos = "https://cloud.r-project.org")
install.packages(c("nycflights13", "tidyverse"))
## Устанавливаю пакеты в 'C:/Users/Admin/AppData/Local/R/win-library/4.4'
## (потому что 'lib' не определено)
## пакет 'nycflights13' успешно распакован, MD5-суммы проверены
## пакет 'tidyverse' успешно распакован, MD5-суммы проверены
##
## Скачанные бинарные пакеты находятся в
## C:\Users\Admin\AppData\Local\Temp\RtmpsBiugn\downloaded_packages
library(tidyverse)
## ── 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.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── 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)
library(palmerpenguins)
1. Для каждого направления (dest) по набору flights посчитайте общее
пройденное расстояние, используя функцию sum().
dest_distance <- flights %>%
group_by(dest) %>%
summarise(total_distance = sum(distance, na.rm = TRUE)) %>%
arrange(desc(total_distance))
print(dest_distance)
## # A tibble: 105 × 2
## dest total_distance
## <chr> <dbl>
## 1 LAX 39927498
## 2 SFO 34366299
## 3 LAS 13439046
## 4 MCO 13280883
## 5 ATL 13033618
## 6 FLL 12899679
## 7 MIA 12801727
## 8 ORD 12599321
## 9 DFW 12085030
## 10 DEN 11732253
## # ℹ 95 more rows
2. Перекодируйте переменную month таким образом, чтобы вместо цифр
были названия месяцев.
flights_month <- flights %>%
mutate(month_name = factor(month,
levels = 1:12,
labels = month.name))
print(flights_month)
## # A tibble: 336,776 × 20
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 1 1 517 515 2 830 819
## 2 2013 1 1 533 529 4 850 830
## 3 2013 1 1 542 540 2 923 850
## 4 2013 1 1 544 545 -1 1004 1022
## 5 2013 1 1 554 600 -6 812 837
## 6 2013 1 1 554 558 -4 740 728
## 7 2013 1 1 555 600 -5 913 854
## 8 2013 1 1 557 600 -3 709 723
## 9 2013 1 1 557 600 -3 838 846
## 10 2013 1 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>, month_name <fct>
3. На основе переменной air_time, показывающей время в полете в
минутах, создайте переменную air_time_hours, в которой время переведено
в часы.
flights_time <- flights %>%
mutate(air_time_hours = air_time / 60)
print(flights_time)
## # A tibble: 336,776 × 20
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 1 1 517 515 2 830 819
## 2 2013 1 1 533 529 4 850 830
## 3 2013 1 1 542 540 2 923 850
## 4 2013 1 1 544 545 -1 1004 1022
## 5 2013 1 1 554 600 -6 812 837
## 6 2013 1 1 554 558 -4 740 728
## 7 2013 1 1 555 600 -5 913 854
## 8 2013 1 1 557 600 -3 709 723
## 9 2013 1 1 557 600 -3 838 846
## 10 2013 1 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>
4. Набор данных о пингвинах penguins из библиотеки palmerpenguins
сгруппируйте по видам и полу пингвинов (species, sex) и посчитайте
средний размер клюва в мм (bill_length_mm).
penguins_summary <- summarise( # Группируем по виду и полу, считаем средний размер клюва
group_by(
penguins,
species,
sex
),
mean_bill_length = mean(bill_length_mm, na.rm = TRUE)
)
## `summarise()` has grouped output by 'species'. You can override using the
## `.groups` argument.
penguins_filtered <- filter( # Убираем пропущенные значения пола
penguins_summary,
!is.na(sex) # Оставляем только строки, где пол не NA
)
penguins_wide <- pivot_wider( # Преобразуем таблицу в нужный формат
penguins_filtered,
names_from = sex, # Столбцы будут создаваться из значений переменной sex
values_from = mean_bill_length # Значения будут браться из переменной mean_bill_length
)
print(penguins_wide)
## # A tibble: 3 × 3
## # Groups: species [3]
## species female male
## <fct> <dbl> <dbl>
## 1 Adelie 37.3 40.4
## 2 Chinstrap 46.6 51.1
## 3 Gentoo 45.6 49.5