Отчёт по ЛР №2 (R)

Базовый анализ данных в R (mtcars)

Author

ФИО студента: Закорецкий Илья Романович

Published

September 29, 2025

1. Краткое описание данных

Встроенный в R набор данных mtcars содержит технические характеристики 32 моделей автомобилей 1973–74 годов. Ключевые переменные:

  • mpg — расход топлива (мили на галлон);
  • cyl — число цилиндров;
  • disp — рабочий объём (куб. дюймы);
  • hp — мощность (л.с.);
  • drat — передаточное число заднего моста;
  • wt — масса (1000 фунтов);
  • qsec — время четверти мили (сек);
  • vs — тип двигателя (0 = V-образный, 1 = рядный);
  • am — тип трансмиссии (0 = автомат, 1 = механика);
  • gear — число передач;
  • carb — число карбюраторов.

2. Алгоритм работы и ключевые шаги

Выполнен обзор данных mtcars, проведены преобразования cyl и am в факторы, добавлены новые признаки power_to_weight и efficiency. Проведена фильтрация по mpg > 25 и wt < 2.5. Выборка сохранена в CSV. Выполнены группировки по cyl x am и mpg, построены визуализации. Графики сохранены по ggsave().

3. Результаты по заданиям

Часть A

1. Выведите первые 12 строк и последние 6 строк mtcars.

data(mtcars)

head(mtcars, 12)
                   mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Merc 240D         24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
Merc 230          22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
Merc 280          19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
Merc 280C         17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
Merc 450SE        16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
tail(mtcars, 6)
                mpg cyl  disp  hp drat    wt qsec vs am gear carb
Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.7  0  1    5    2
Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.9  1  1    5    2
Ford Pantera L 15.8   8 351.0 264 4.22 3.170 14.5  0  1    5    4
Ferrari Dino   19.7   6 145.0 175 3.62 2.770 15.5  0  1    5    6
Maserati Bora  15.0   8 301.0 335 3.54 3.570 14.6  0  1    5    8
Volvo 142E     21.4   4 121.0 109 4.11 2.780 18.6  1  1    4    2

2. Отобразите структуру и краткую сводку по данным (str(), summary(), glimpse()).

str(mtcars)
'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 ...
 $ qsec: num  16.5 17 18.6 19.4 17 ...
 $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
 $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
 $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
 $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
summary(mtcars)
      mpg             cyl             disp             hp       
 Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
 1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
 Median :19.20   Median :6.000   Median :196.3   Median :123.0  
 Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
 3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
 Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
      drat             wt             qsec             vs        
 Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000  
 1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000  
 Median :3.695   Median :3.325   Median :17.71   Median :0.0000  
 Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375  
 3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000  
 Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000  
       am              gear            carb      
 Min.   :0.0000   Min.   :3.000   Min.   :1.000  
 1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000  
 Median :0.0000   Median :4.000   Median :2.000  
 Mean   :0.4062   Mean   :3.688   Mean   :2.812  
 3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000  
 Max.   :1.0000   Max.   :5.000   Max.   :8.000  
glimpse(mtcars)
Rows: 32
Columns: 11
$ mpg  <dbl> 21.0, 21.0, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4, 22.8, 19.2, 17.8,…
$ cyl  <dbl> 6, 6, 4, 6, 8, 6, 8, 4, 4, 6, 6, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 8,…
$ disp <dbl> 160.0, 160.0, 108.0, 258.0, 360.0, 225.0, 360.0, 146.7, 140.8, 16…
$ hp   <dbl> 110, 110, 93, 110, 175, 105, 245, 62, 95, 123, 123, 180, 180, 180…
$ drat <dbl> 3.90, 3.90, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92, 3.92, 3.92,…
$ wt   <dbl> 2.620, 2.875, 2.320, 3.215, 3.440, 3.460, 3.570, 3.190, 3.150, 3.…
$ qsec <dbl> 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20.00, 22.90, 18…
$ vs   <dbl> 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0,…
$ am   <dbl> 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,…
$ gear <dbl> 4, 4, 4, 3, 3, 3, 3, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, 4, 3, 3,…
$ carb <dbl> 4, 4, 1, 1, 2, 1, 4, 2, 2, 4, 4, 3, 3, 3, 4, 4, 4, 1, 2, 1, 1, 2,…

3. Преобразуйте переменные cyl и am в факторы; для am назначьте метки auto/manual.

mtcars <- mtcars %>%
  mutate(
    cyl = as.factor(cyl),
    am = factor(am, labels = c("auto", "manual"))
  )

4. Добавьте признаки: power_to_weight = hp / wt и efficiency = mpg / wt.

mtcars <- mtcars %>%
  mutate(
    power_to_weight = hp / wt,
    efficiency = mpg / wt
  )

5. Отсортируйте таблицу по efficiency по убыванию, выведите топ-10.

mtcars %>%
  arrange(desc(efficiency)) %>%
  head(10)
                mpg cyl  disp  hp drat    wt  qsec vs     am gear carb
Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.90  1 manual    5    2
Honda Civic    30.4   4  75.7  52 4.93 1.615 18.52  1 manual    4    2
Toyota Corolla 33.9   4  71.1  65 4.22 1.835 19.90  1 manual    4    1
Fiat 128       32.4   4  78.7  66 4.08 2.200 19.47  1 manual    4    1
Fiat X1-9      27.3   4  79.0  66 4.08 1.935 18.90  1 manual    4    1
Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.70  0 manual    5    2
Datsun 710     22.8   4 108.0  93 3.85 2.320 18.61  1 manual    4    1
Toyota Corona  21.5   4 120.1  97 3.70 2.465 20.01  1   auto    3    1
Mazda RX4      21.0   6 160.0 110 3.90 2.620 16.46  0 manual    4    4
Volvo 142E     21.4   4 121.0 109 4.11 2.780 18.60  1 manual    4    2
               power_to_weight efficiency
Lotus Europa          74.68605  20.092531
Honda Civic           32.19814  18.823529
Toyota Corolla        35.42234  18.474114
Fiat 128              30.00000  14.727273
Fiat X1-9             34.10853  14.108527
Porsche 914-2         42.52336  12.149533
Datsun 710            40.08621   9.827586
Toyota Corona         39.35091   8.722110
Mazda RX4             41.98473   8.015267
Volvo 142E            39.20863   7.697842

Часть B

6. Отберите автомобили с mpg > 25 и wt < 2.5 (покажите model, mpg, wt).

mtcars <- mtcars %>%
  mutate(model = rownames(mtcars))

mtcars_filtered <- mtcars %>%
  filter(mpg > 25, wt < 2.5) %>%
  select(model, mpg, wt)

mtcars_filtered
                        model  mpg    wt
Fiat 128             Fiat 128 32.4 2.200
Honda Civic       Honda Civic 30.4 1.615
Toyota Corolla Toyota Corolla 33.9 1.835
Fiat X1-9           Fiat X1-9 27.3 1.935
Porsche 914-2   Porsche 914-2 26.0 2.140
Lotus Europa     Lotus Europa 30.4 1.513

7. Сформируйте таблицу из столбцов model, mpg, hp, cyl, am и сохраните в mtcars_selection.csv.

mtcars_selection <- mtcars %>%
  select(model, mpg, hp, cyl, am)

write.csv(mtcars_selection, "mtcars_selection.csv")

Часть C

8. Посчитайте для каждой комбинации cyl × am: количество авто, средний mpg, медианный hp.

mtcars_summary <- mtcars %>%
  group_by(cyl, am) %>%
  summarise(
    count = n(),
    avg_mpg = mean(mpg),
    median_hp = median(hp),
  )
`summarise()` has grouped output by 'cyl'. You can override using the `.groups`
argument.
mtcars_summary
# A tibble: 6 × 5
# Groups:   cyl [3]
  cyl   am     count avg_mpg median_hp
  <fct> <fct>  <int>   <dbl>     <dbl>
1 4     auto       3    22.9      95  
2 4     manual     8    28.1      78.5
3 6     auto       4    19.1     116. 
4 6     manual     3    20.6     110  
5 8     auto      12    15.0     180  
6 8     manual     2    15.4     300. 

9. Найдите средний mpg по числу передач gear и визуализируйте bar chart (с подписью значений над столбцами).

mpg_by_gear <- mtcars %>%
  group_by(gear) %>%
  summarise(avg_mpg = mean(mpg))

mpg_by_gear
# A tibble: 3 × 2
   gear avg_mpg
  <dbl>   <dbl>
1     3    16.1
2     4    24.5
3     5    21.4
ggplot(mpg_by_gear, aes(x = factor(gear), y = avg_mpg)) +
  geom_col(fill = "#8bd3e6") +
  geom_text(aes(label = round(avg_mpg, 1)), vjust = -0.5) +
  labs(
    title = "Средний MPG по числу передач",
    x = "Количество передач (gear)",
    y = "Средний MPG"
  ) +
  theme_minimal()

Часть D

10. Постройте scatter plot wt vs mpg, цвет = cyl, форма точки = am, добавьте тренд geom_smooth(method="lm").

scatter_plot <- ggplot(mtcars, aes(x = wt, y = mpg, color = cyl, shape = am)) +
  geom_point(size = 3) +
  geom_smooth(method = "lm", color = "black") +
  labs(
    title = "Зависимость веса от расхода топлива",
    x = "Вес (1000 lbs)",
    y = "MPG",
    color = "Cylinders",
    shape = "Transmission"
  ) +
  theme_minimal()

scatter_plot  

11. Постройте boxplot mpg по am с фасетами по cyl.

boxplot_cyl <- ggplot(mtcars, aes(x = am, y = mpg, fill = am)) +
  geom_boxplot() +
  facet_wrap(~ cyl) +
  labs(
    title = "MPG по типу коробки передач с разбивкой по цилиндрам",
    x = "Transmission",
    y = "MPG"
  ) +
  theme_minimal() +
  theme(legend.position = "none")

boxplot_cyl  

12. Сохраните лучшие два графика с помощью ggsave().

ggsave("scatter_plot.png", scatter_plot, width = 7, height = 5, dpi = 300)
ggsave("boxplot_cyl.png", boxplot_cyl, width = 7, height = 5, dpi = 300)

4. Выводы

  • Автомобили с меньшим весом и высоким расодом топлива - модели с малым числом цилиндров и автоматической коробкой передач
  • Средний mpg снижается с увеличанием числа цилиндров
  • Модели с ручной коробкой имеют больший расход топлива по сравнению с автоматом
  • Наиболее эффективные автомобили - лёгкие и мощные
  • Чем тяжелее автомобиль, тем меньше расход топлива
  • Различия по типу трансмиссии в расходе топлива выражены сильнее для автомобилей с меньшим числом цилиндров