R 具有多个列的数据框,从一列中的一组相同值中选择另一列中的最大值

R 具有多个列的数据框,从一列中的一组相同值中选择另一列中的最大值,r,R,我有以下数据框: 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 B C 0.1 5 6 0.2 10 300 0.3 1 30 0.4 6 40 我不确定这是用base R还是用库来解决的问题。因为我正在考虑使

我有以下数据框:

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    B    C  
0.1  5    6  
0.2  10   300  
0.3  1    30  
0.4  6    40

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

你是对的,使用dplyr和A组分组,你也可以使用dplyr中的slice_max为每个组选择B中的最大值

library(dplyr)

DF %>% 
  group_by(A) %>% 
  slice_max(B) 
输出:

# A tibble: 4 x 3
# Groups:   A [4]
      A     B     C
  <dbl> <dbl> <dbl>
1   0.1     5     6
2   0.2    10   300
3   0.3     1    30
4   0.4     6    40

有两个基本R选项:

使用子集+ave 使用合并+聚合 带有data.table的选项,其中按“A”分组,获取其中“B”为max的索引,使用其中的.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
slice_maxB不工作我必须换成slicewhich.maxB谢谢
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