Перейти до основного вмісту
Модуль 3 · Урок 2 із 26/10 у курсі~15 min
Модульні уроки (2/2)

Дослідження та агрегація

R було створено в основному як статистичне середовище, тому воно надає багато вбудованих функцій для аналізу, узагальнення та розуміння розподілу даних у векторах або таблицях.

Основні статистичні функції

R дозволяє легко обчислити основні міри центру та розвороту на числових векторах:

  • mean(x): обчислює середнє арифметичне елементів.
  • median(x): обчислює медіану (середнє значення).
  • sd(x): обчислює стандартне відхилення (показник того, наскільки розкидані дані).
  • min(x) і max(x): повертає мінімальне та максимальне значення відповідно.
R
values <- c(10, 12, 15, 18, 20, 22)

avg <- mean(values)
dispersion <- sd(values)

cat("Mean:", avg, "- Std Dev:", round(dispersion, 2), "\n")

Обробка відсутніх даних (NA)

У реальному світі набори даних часто містять відсутні значення, представлені в R спеціальною сутністю NA (Недоступно).

Якщо ви спробуєте обчислити середнє або будь-яке інше агрегатне значення для вектора, який містить хоча б один NA, R поверне NA як результат. Щоб проігнорувати пропущені значення, ви повинні передати логічний аргумент na.rm = TRUE (вилучити NA):

R
temperatures <- c(18, 21, NA, 24, 19)

# This will return NA
print(mean(temperatures))

# This will ignore the NA and perform the calculation on valid values
print(mean(temperatures, na.rm = TRUE))

Глобальне резюме з summary()

Функція summary() — це потужний інструмент, який надає повний статистичний огляд вектора або цілого кадру даних, показуючи мінімальне значення, перший квартиль, медіану, середнє значення, третій квартиль і максимум:

R
prices <- c(5, 10, 15, 20, 100)
print(summary(prices))

Агрегування даних за допомогою aggregate

Під час роботи з кадрами даних зазвичай обчислюють підсумкову статистику (наприклад, середнє значення або суму) для певних груп або категорій. Функція aggregate() в R спрощує цей процес:

R
df <- data.frame(
  department = c("HR", "IT", "HR", "IT"),
  salary = c(3000, 4500, 3200, 4800)
)

# Calcola la media dei salari per dipartimento
avg_salaries <- aggregate(salary ~ department, data = df, FUN = mean)
print(avg_salaries)

Синтаксис salary ~ department означає «проаналізувати змінну salary на основі змінної department». Аргумент FUN = mean вказує, що ми хочемо обчислити середнє арифметичне для кожної групи.

Розширена фільтрація з subset

Функція subset() забезпечує інтуїтивно зрозумілий і елегантний спосіб вилучення підмножин рядків і стовпців із кадру даних, уникаючи використання складних квадратних дужок:

R
employees <- data.frame(
  name = c("Alice", "Bob", "Charlie"),
  age = c(25, 34, 29),
  active = c(TRUE, FALSE, TRUE)
)

# Filtra solo i dipendenti attivi con età superiore a 28
active_employees <- subset(employees, active == TRUE & age > 28)

Спробуйте самі

вправи#r.m3.l2.e1
Спроби: 0Завантаження…

За векторних температур обчисліть середнє значення та збережіть його в змінній mean_temp. Потім обчисліть медіану та збережіть її в median_temp.

Завантаження редактора…
Показати підказку

Usa mean_temp <- середнє (температури) e median_temp <- середнє (температури)

Рішення доступне після 3 спроб

вправи#r.m3.l2.e2
Спроби: 0Завантаження…

Враховуючи вектор балів, що містить значення NA, обчисліть стандартне відхилення вектора за винятком пропущених значень і збережіть його в змінній sd_scores.

Завантаження редактора…
Показати підказку

Використовуйте функцію sd() з аргументом na.rm = TRUE: sd_scores <- sd(scores, na.rm = TRUE)

Рішення доступне після 3 спроб

вправи#r.m3.l2.e3
Спроби: 0Завантаження…

Враховуючи кадр даних df, отримайте статистичний підсумок стовпця значень і збережіть його в змінній stats_summary.

Завантаження редактора…
Показати підказку

Витягніть стовпець за допомогою оператора $ і передайте його в summary(): stats_summary <- summary(df$values)

Рішення доступне після 3 спроб

вправи#r.m3.l2.e4
Спроби: 0Завантаження…

Враховуючи продажі фрейму даних, використовуйте функцію aggregate(), щоб обчислити суму (FUN = сума) стовпця доходу, згрупованого за стовпцем регіону. Збережіть результат у змінній region_sales.

Завантаження редактора…
Показати підказку

Використовуйте: region_sales <- aggregate(revenue ~ region, data = sales, FUN = sum)

Рішення доступне після 3 спроб

вправи#r.m3.l2.e5
Спроби: 0Завантаження…

Враховуючи продукти фрейму даних, використовуйте функцію subset(), щоб фільтрувати лише продукти, які належать до категорії «Електроніка» (категорія == «Електроніка») і мають ціну, вищу за 100 (ціна > 100). Збережіть результат у змінній drag_electronics.

Завантаження редактора…
Показати підказку

Використовуйте: drag_electronics <- subset(products, category == 'Electronics' & price > 100)

Рішення доступне після 3 спроб