加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 01:08:49 所属栏目:百科 来源:网络整理
导读:我有一个数据帧在R中的形式如下: head(data) Group Score Info1 1 1 a2 1 2 b3 1 3 c4 2 4 d5 2 3 e6 2 1 f 我想使用max函数在Score列后进行聚合 aggregate(data$Score,list(data$Group),max) Group.1 x1 1 32 2 4 但我也想显示与每个组的Score列的最大值相
我有一个数据帧在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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读