首页 > 解决方案 > 具有多列的数据框,从一列中的一组相同值中选择另一列中的最大值

问题描述

我有以下数据框:

DF <- data.frame(A=c(0.1,0.1,0.1,0.1,0.2,0.2,0.2,0.3,0.4,0.4 ), B=c(1,2,1,5,10,2,3,1,6,2), B=c(1000,50,400,6,300,2000,20,30,40,50))

我想为 A 中的每组相等值过滤 DF 选择 B 中的最大值。

例如,对于 A 中的 0.1,B 中的最大值为 5。

以新数据框结束:

A    B    C  
0.1  5    6  
0.2  10   300  
0.3  1    30  
0.4  6    40

我不确定这是否是使用基本 R 或库来解决的问题。因为我正在考虑使用 dplyr 和 A 组。我是对的吗?

标签: r

解决方案


where group by 'A'的选项data.table,获取 'B' 所在的索引maxwith which.max,换.I行以返回行索引。如果我们不指定或重命名,默认情况下,它返回为 'V1' 列,我们将其提取为向量以子集数据集的行

library(data.table)
setDT(DF)[DF[, .I[which.max(B)], A]$V1]

-输出

#     A  B B.1
#1: 0.1  5   6
#2: 0.2 10 300
#3: 0.3  1  30
#4: 0.4  6  40

推荐阅读