前端之家收集整理的这篇文章主要介绍了
在给定列上聚合数据帧,并显示另一列,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个数据帧在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
一行,没有魔法,快,结果有好的名字=)