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

我有一个数据帧在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

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

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...