Уроки модуля (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.
Показать подсказку
США средняя_темп <- среднее (температура) и медиана_темп <- медиана (температура)
Решение доступно после 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 попыток
Учитывая продажи фрейма данных, используйте функциюагрегат() для расчета суммы (FUN = сумма) столбца дохода, сгруппированной по столбцу региона. Сохраните результат в переменной Region_sales.
Показать подсказку
Используйте: регион_продаж <- агрегат (доход ~ регион, данные = продажи, FUN = сумма)
Решение доступно после 3 попыток
Учитывая продукты из фрейма данных, используйте функцию subset() для фильтрации только тех продуктов, которые относятся к категории «Электроника» (категория == «Электроника») и имеют цену больше 100 (цена > 100). Сохраните результат в переменной дорогой_электроники.
Показать подсказку
Используйте: дорогостоящая_электроника <- subset(продукты, категория == «Электроника» и цена > 100)
Решение доступно после 3 попыток