Модульні уроки (2/2)
Дослідження та агрегація
R було створено в основному як статистичне середовище, тому воно надає багато вбудованих функцій для аналізу, узагальнення та розуміння розподілу даних у векторах або таблицях.
Основні статистичні функції
R дозволяє легко обчислити основні міри центру та розвороту на числових векторах:
mean(x): обчислює середнє арифметичне елементів.median(x): обчислює медіану (середнє значення).sd(x): обчислює стандартне відхилення (показник того, наскільки розкидані дані).min(x)іmax(x): повертає мінімальне та максимальне значення відповідно.
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):
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() — це потужний інструмент, який надає повний статистичний огляд вектора або цілого кадру даних, показуючи мінімальне значення, перший квартиль, медіану, середнє значення, третій квартиль і максимум:
prices <- c(5, 10, 15, 20, 100)
print(summary(prices))Агрегування даних за допомогою aggregate
Під час роботи з кадрами даних зазвичай обчислюють підсумкову статистику (наприклад, середнє значення або суму) для певних груп або категорій. Функція aggregate() в 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() забезпечує інтуїтивно зрозумілий і елегантний спосіб вилучення підмножин рядків і стовпців із кадру даних, уникаючи використання складних квадратних дужок:
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)Спробуйте самі
За векторних температур обчисліть середнє значення та збережіть його в змінній mean_temp. Потім обчисліть медіану та збережіть її в median_temp.
Показати підказку
Usa mean_temp <- середнє (температури) e median_temp <- середнє (температури)
Рішення доступне після 3 спроб
Враховуючи вектор балів, що містить значення NA, обчисліть стандартне відхилення вектора за винятком пропущених значень і збережіть його в змінній sd_scores.
Показати підказку
Використовуйте функцію sd() з аргументом na.rm = TRUE: sd_scores <- sd(scores, na.rm = TRUE)
Рішення доступне після 3 спроб
Враховуючи кадр даних df, отримайте статистичний підсумок стовпця значень і збережіть його в змінній stats_summary.
Показати підказку
Витягніть стовпець за допомогою оператора $ і передайте його в summary(): stats_summary <- summary(df$values)
Рішення доступне після 3 спроб
Враховуючи продажі фрейму даних, використовуйте функцію aggregate(), щоб обчислити суму (FUN = сума) стовпця доходу, згрупованого за стовпцем регіону. Збережіть результат у змінній region_sales.
Показати підказку
Використовуйте: region_sales <- aggregate(revenue ~ region, data = sales, FUN = sum)
Рішення доступне після 3 спроб
Враховуючи продукти фрейму даних, використовуйте функцію subset(), щоб фільтрувати лише продукти, які належать до категорії «Електроніка» (категорія == «Електроніка») і мають ціну, вищу за 100 (ціна > 100). Збережіть результат у змінній drag_electronics.
Показати підказку
Використовуйте: drag_electronics <- subset(products, category == 'Electronics' & price > 100)
Рішення доступне після 3 спроб