Перейти к основному содержимому
Модуль 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.

Загрузка редактора…
Показать подсказку

США средняя_темп <- среднее (температура) и медиана_темп <- медиана (температура)

Решение доступно после 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Загрузка…

Учитывая продажи фрейма данных, используйте функциюагрегат() для расчета суммы (FUN = сумма) столбца дохода, сгруппированной по столбцу региона. Сохраните результат в переменной Region_sales.

Загрузка редактора…
Показать подсказку

Используйте: регион_продаж <- агрегат (доход ~ регион, данные = продажи, FUN = сумма)

Решение доступно после 3 попыток

Упражнение#r.m3.l2.e5
Попыток: 0Загрузка…

Учитывая продукты из фрейма данных, используйте функцию subset() для фильтрации только тех продуктов, которые относятся к категории «Электроника» (категория == «Электроника») и имеют цену больше 100 (цена > 100). Сохраните результат в переменной дорогой_электроники.

Загрузка редактора…
Показать подсказку

Используйте: дорогостоящая_электроника <- subset(продукты, категория == «Электроника» и цена > 100)

Решение доступно после 3 попыток