在数据分析和统计建模中,`aggregate()` 函数是 R 语言中一个非常实用且功能强大的工具。它可以帮助我们根据特定的分组变量对数据进行汇总操作。本文将详细介绍 `aggregate()` 函数的基本语法、常用参数以及实际应用场景,帮助你快速掌握这一函数的使用技巧。
基本语法
```R
aggregate(x, by, FUN, ...)
```
- x:需要被聚合的数据对象,通常是数据框或矩阵。
- by:分组变量的列表,通常是一个包含分组因子的列表。
- FUN:用于聚合的函数,例如 `sum`, `mean`, `min`, `max` 等。
- ...:其他可选参数,传递给聚合函数。
示例一:简单聚合
假设我们有一个数据框 `df`,其中包含学生的成绩信息:
```R
df <- data.frame(
学生 = c("张三", "李四", "王五", "赵六"),
科目 = c("数学", "英语", "数学", "英语"),
成绩 = c(85, 90, 78, 88)
)
print(df)
```
输出如下:
```
学生 科目 成绩
1张三 数学85
2李四 英语90
3王五 数学78
4赵六 英语88
```
现在我们想要按科目计算平均成绩:
```R
result <- aggregate(df$成绩, by = list(df$科目), FUN = mean)
print(result)
```
输出结果为:
```
Group.1 x
1 英语 89.00
2 数学 81.50
```
这里,`Group.1` 是分组变量(科目),`x` 是每个组的平均成绩。
示例二:多列聚合
如果数据框中有多个数值列,并且希望对这些列分别进行聚合,可以这样做:
```R
df <- data.frame(
学生 = c("张三", "李四", "王五", "赵六"),
科目 = c("数学", "英语", "数学", "英语"),
分数1 = c(85, 90, 78, 88),
分数2 = c(70, 80, 65, 85)
)
result <- aggregate(. ~ 科目, data = df, FUN = mean)
print(result)
```
输出结果为:
```
科目 分数1 分数2
1 英语90.082.5
2 数学81.567.5
```
在这个例子中,`. ~ 科目` 表示以 `科目` 列为分组变量,对其他所有列进行聚合。
示例三:自定义聚合函数
除了内置的聚合函数外,我们还可以使用自定义函数来实现更复杂的逻辑。例如,计算成绩的中位数:
```R
custom_median <- function(x) {
median(x, na.rm = TRUE)
}
result <- aggregate(df$成绩, by = list(df$科目), FUN = custom_median)
print(result)
```
输出结果为:
```
Group.1 x
1 英语 89.00
2 数学 81.50
```
注意事项
1. 分组变量的格式:确保分组变量是正确的格式,例如因子或字符向量。
2. 处理缺失值:在使用聚合函数时,注意处理缺失值(NA),可以通过设置 `na.rm = TRUE` 参数来忽略缺失值。
3. 多列聚合:当数据框有多列时,确保分组变量与数据列正确匹配。
通过以上示例可以看出,`aggregate()` 函数是一个灵活且高效的工具,适用于各种场景的数据聚合需求。无论是简单的平均值计算还是复杂的自定义逻辑,都可以轻松实现。希望本文能帮助你更好地理解和运用 `aggregate()` 函数!