Для каждого направления (dest) по набору flights посчитайте общее
пройденное расстояние, используя функцию sum()
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.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)
f<-flights
flights %>%
group_by(dest) %>%
summarise(distance_sum = sum(distance, na.rm = TRUE))
## # A tibble: 105 × 2
## dest distance_sum
## <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 таким образом, чтобы вместо цифр были
названия месяцев.
flights %>%
mutate(month= case_when(
month == 1 ~ "январь",
month == 2 ~ "февраль",
month == 3 ~ "март",
month == 4 ~ "апрель",
month == 5 ~ "май",
month == 6 ~ "июнь",
month == 7 ~ "июль",
month == 8 ~ "август",
month == 9 ~ "сентябрь",
month == 10 ~ "октябрь",
month == 11 ~ "ноябрь",
month == 12 ~ "декабрь"))
## # A tibble: 336,776 × 19
## 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
## # ℹ 11 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, показывающей время в полете в
минутах, создайте переменную air_time_hours, в которой время переведено
в часы.
mutate(flights,
air_time_hours = air_time / 60,
)
## # 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>
Набор данных о пингвинах penguins из библиотеки palmerpenguins
сгруппируйте по видам и полу пингвинов (species, sex) и посчитайте
средний размер клюва в мм (bill_length_mm). Затем трансформируйте
результаты так, чтобы получилась вот такая таблица (там будут
пропущенные значения по полу, их нужно будет убрать):
library(palmerpenguins)
p<-penguins
penguins %>%
group_by(species, sex)
## # A tibble: 344 × 8
## # Groups: species, sex [8]
## species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
## <fct> <fct> <dbl> <dbl> <int> <int>
## 1 Adelie Torgersen 39.1 18.7 181 3750
## 2 Adelie Torgersen 39.5 17.4 186 3800
## 3 Adelie Torgersen 40.3 18 195 3250
## 4 Adelie Torgersen NA NA NA NA
## 5 Adelie Torgersen 36.7 19.3 193 3450
## 6 Adelie Torgersen 39.3 20.6 190 3650
## 7 Adelie Torgersen 38.9 17.8 181 3625
## 8 Adelie Torgersen 39.2 19.6 195 4675
## 9 Adelie Torgersen 34.1 18.1 193 3475
## 10 Adelie Torgersen 42 20.2 190 4250
## # ℹ 334 more rows
## # ℹ 2 more variables: sex <fct>, year <int>
tab<-penguins %>%
group_by(species, sex) %>%
summarise(bill_length_mm_mean = mean(bill_length_mm, na.rm = TRUE))
## `summarise()` has grouped output by 'species'. You can override using the
## `.groups` argument.
tab
## # A tibble: 8 × 3
## # Groups: species [3]
## species sex bill_length_mm_mean
## <fct> <fct> <dbl>
## 1 Adelie female 37.3
## 2 Adelie male 40.4
## 3 Adelie <NA> 37.8
## 4 Chinstrap female 46.6
## 5 Chinstrap male 51.1
## 6 Gentoo female 45.6
## 7 Gentoo male 49.5
## 8 Gentoo <NA> 45.6
tab %>%
filter(!is.na(sex)) %>%
pivot_wider(names_from = "sex",
values_from = bill_length_mm_mean
)
## # 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