模块课程(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 聚合数据
使用数据框时,通常会计算特定组或类别的汇总统计数据(例如平均值或总和)。 R 中的 aggregate() 函数简化了这个过程:
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 的意思是“根据 department 变量分析 salary 变量”。 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中。
显示提示
美国mean_temp <- 平均值(温度) e 中值_温度 <- 中值(温度)
3 次尝试后可用的解决方案
给定包含 NA 值的分数向量,计算排除缺失值的向量的标准差,并将其保存在 sd_scores 变量中。
显示提示
将 sd() 函数与 na.rm = TRUE 参数结合使用:sd_scores <- sd(scores, na.rm = TRUE)
3 次尝试后可用的解决方案
给定数据框df,获取values列的统计摘要并将其保存在stats_summary变量中。
显示提示
使用 $ 运算符提取列并将其传递给summary():stats_summary <-summary(df$values)
3 次尝试后可用的解决方案
给定数据框销售额,使用aggregate()函数计算按区域列分组的收入列的总和(FUN = sum)。将结果保存在region_sales 变量中。
显示提示
使用:region_sales <- 聚合(收入 ~ 区域,数据 = 销售额,FUN = 总和)
3 次尝试后可用的解决方案
给定数据框产品,使用subset()函数仅过滤属于“电子产品”类别(类别==“电子产品”)且价格大于100(价格> 100)的产品。将结果保存在expense_ electronics 变量中。
显示提示
使用:昂贵的电子产品 <- 子集(产品,类别 == '电子产品' & 价格 > 100)
3 次尝试后可用的解决方案