# Глобальные настройки
knitr::opts_chunk$set(
  echo = FALSE,       # не показывать код в итоговом документе
  warning = FALSE,    # не показывать предупреждения
  message = FALSE,    # не показывать сообщения
  fig.align = 'center'
)

# Загрузка пакетов
library(dplyr)
## 
## Присоединяю пакет: 'dplyr'
## Следующие объекты скрыты от 'package:stats':
## 
##     filter, lag
## Следующие объекты скрыты от 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(knitr)

# Показываем структуру данных
cat("### Структура данных\n")
## ### Структура данных
str(mtcars) %>% capture.output() %>% .[1:7] %>% paste(collapse = "\n") %>% cat()
## 'data.frame':    32 obs. of  11 variables:
##  $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp: num  160 160 108 258 360 ...
##  $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
# Первые 6 строк
cat("\n\n### Первые 6 строк\n")
## 
## 
## ### Первые 6 строк
kable(head(mtcars), align = 'c')
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
# Основная статистика
cat("\n\n### Основная статистика\n")
## 
## 
## ### Основная статистика
kable(summary(mtcars), align = 'c')
mpg cyl disp hp drat wt qsec vs am gear carb
Min. :10.40 Min. :4.000 Min. : 71.1 Min. : 52.0 Min. :2.760 Min. :1.513 Min. :14.50 Min. :0.0000 Min. :0.0000 Min. :3.000 Min. :1.000
1st Qu.:15.43 1st Qu.:4.000 1st Qu.:120.8 1st Qu.: 96.5 1st Qu.:3.080 1st Qu.:2.581 1st Qu.:16.89 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:3.000 1st Qu.:2.000
Median :19.20 Median :6.000 Median :196.3 Median :123.0 Median :3.695 Median :3.325 Median :17.71 Median :0.0000 Median :0.0000 Median :4.000 Median :2.000
Mean :20.09 Mean :6.188 Mean :230.7 Mean :146.7 Mean :3.597 Mean :3.217 Mean :17.85 Mean :0.4375 Mean :0.4062 Mean :3.688 Mean :2.812
3rd Qu.:22.80 3rd Qu.:8.000 3rd Qu.:326.0 3rd Qu.:180.0 3rd Qu.:3.920 3rd Qu.:3.610 3rd Qu.:18.90 3rd Qu.:1.0000 3rd Qu.:1.0000 3rd Qu.:4.000 3rd Qu.:4.000
Max. :33.90 Max. :8.000 Max. :472.0 Max. :335.0 Max. :4.930 Max. :5.424 Max. :22.90 Max. :1.0000 Max. :1.0000 Max. :5.000 Max. :8.000
# Вычисляем среднюю мощность
hp_stats <- mtcars %>%
  group_by(vs) %>%
  summarise(
    `Тип двигателя` = ifelse(vs == 0, "V-образный", "Прямой"),
    `Средняя мощность (hp)` = round(mean(hp), 1),
    `Количество авто` = n(),
    .groups = 'drop'
  ) %>%
  select(-vs)
## Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in
## dplyr 1.1.0.
## ℹ Please use `reframe()` instead.
## ℹ When switching from `summarise()` to `reframe()`, remember that `reframe()`
##   always returns an ungrouped data frame and adjust accordingly.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
# Выводим красивую таблицу
kable(hp_stats, align = 'c', caption = "Средняя мощность по типам двигателя")
Средняя мощность по типам двигателя
Тип двигателя Средняя мощность (hp) Количество авто
V-образный 189.7 18
V-образный 189.7 18
V-образный 189.7 18
V-образный 189.7 18
V-образный 189.7 18
V-образный 189.7 18
V-образный 189.7 18
V-образный 189.7 18
V-образный 189.7 18
V-образный 189.7 18
V-образный 189.7 18
V-образный 189.7 18
V-образный 189.7 18
V-образный 189.7 18
V-образный 189.7 18
V-образный 189.7 18
V-образный 189.7 18
V-образный 189.7 18
Прямой 91.4 14
Прямой 91.4 14
Прямой 91.4 14
Прямой 91.4 14
Прямой 91.4 14
Прямой 91.4 14
Прямой 91.4 14
Прямой 91.4 14
Прямой 91.4 14
Прямой 91.4 14
Прямой 91.4 14
Прямой 91.4 14
Прямой 91.4 14
Прямой 91.4 14
ggplot(mtcars, aes(x = hp, y = qsec)) +
  geom_point(aes(color = factor(cyl)), size = 4, alpha = 0.8) +
  geom_smooth(method = "lm", color = "red", se = FALSE) +
  scale_color_brewer(palette = "Set1", name = "Цилиндры") +
  labs(
    title = "Зависимость времени разгона от мощности",
    x = "Мощность (л.с.)",
    y = "Время разгона до 1/4 мили (сек)"
  ) +
  theme_minimal(base_size = 14) +
  theme(legend.position = "bottom")
## `geom_smooth()` using formula = 'y ~ x'

ggplot(mtcars, aes(
  x = factor(vs, labels = c("V-образный", "Прямой")),
  y = hp,
  fill = factor(vs)
)) +
  geom_boxplot(alpha = 0.7, show.legend = FALSE) +
  scale_fill_manual(values = c("#E41A1C", "#377EB8")) +
  labs(
    title = "Распределение мощности по типам двигателя",
    x = "Тип двигателя",
    y = "Мощность (л.с.)"
  ) +
  theme_minimal(base_size = 14) +
  theme(axis.text.x = element_text(size = 12))