在给定列上聚合数据帧,并显示另一列

前端之家收集整理的这篇文章主要介绍了在给定列上聚合数据帧,并显示另一列前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个数据帧在R中的形式如下:
> head(data)
  Group score Info
1     1     1    a
2     1     2    b
3     1     3    c
4     2     4    d
5     2     3    e
6     2     1    f

我想使用max函数score列后进行聚合

> aggregate(data$score,list(data$Group),max)

  Group.1         x
1       1         3
2       2         4

但我也想显示与每个组的score列的最大值相关联的信息列。我不知道如何做到这一点。我想要的输出将是:

Group.1         x        y
1       1         3        c
2       2         4        d

任何提示

首先,使用split拆分数据:
split(z,z$Group)

然后,对于每个块,选择具有最大分数的行:

lapply(split(z,z$Group),function(chunk) chunk[which.max(chunk$score),])

最后还原回一个data.frame do.calling rbind:

do.call(rbind,lapply(split(z,]))

结果:

Group score Info
1     1     3    c
2     2     4    d

一行,没有魔法,快,结果有好的名字=)

猜你在找的设计模式相关文章