# Глобальные настройки
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')
| 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')
|
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 = "Средняя мощность по типам двигателя")
Средняя мощность по типам двигателя
| 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))
