aggregate这个函数的功能比较强大,它首先将数据进行分组(按行),然后对每一组数据进行函数统计,根据数据对象不同它有三种用法,分别应用于数据框(data.frame)、公式(formula)和时间序列(ts):
aggregate(x, by, FUN, ..., simplify = TRUE)
aggregate(formula, data, FUN, ..., subset, na.action = na.omit)
aggregate(x, nfrequency = 1, FUN = sum, ndeltat = 1, ts.eps = getOption("ts.eps"), ...)
其中针对数据的分组处理,例如有数据如下:
> dat
ID sample1 sample2 sample3 type
1 A 1 2 2 1
2 A 2 4 9 2
3 A 4 3 1 3
4 C 5 5 8 1
5 C 6 9 7 2
6 C 3 1 3 3
7 D 9 10 9 1
8 D 11 18 1 2
按照type对数据进行分组求和,均值或者median等等,以sum为例:
> temp=aggregate(dat[,2:4],by=list(dat$type),FUN=sum)
> temp
Group.1 sample1 sample2 sample3
1 1 15 17 19
2 2 19 31 17
3 3 7 4 4
>
参数的第一个必须为数值型,所以去掉了第一列,对type不做操作,也去除,得到的数据Group.1即type类型
如果同时针对两种分组ID 和type进行,可以获得如下结果:
> temp=aggregate(dat[,2:4],by=list(dat$ID,dat$type),FUN=sum)
> temp
Group.1 Group.2 sample1 sample2 sample3
1 A 1 1 2 2
2 C 1 5 5 8
3 D 1 9 10 9
4 A 2 2 4 9
5 C 2 6 9 7
6 D 2 11 18 1
7 A 3 4 3 1
8 C 3 3 1 3
mean、median、max等操作相同
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!