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