aggregate对数据分组处理

利用aggregate对数据进行分组处理,包括分组求和,分组取均值,最大值,中位数等等

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等操作相同


  • 发表于 2018-05-31 15:52
  • 阅读 ( 8581 )
  • 分类:R

0 条评论

请先 登录 后评论
Daitoue
Daitoue

167 篇文章

作家榜 »

  1. omicsgene 698 文章
  2. 安生水 347 文章
  3. Daitoue 167 文章
  4. 生物女学霸 120 文章
  5. xun 82 文章
  6. 红橙子 78 文章
  7. rzx 74 文章
  8. CORNERSTONE 72 文章