如何获得具有变量最大值的所有行

时间:2019-01-15 21:09:11

标签: r dataframe max row subset

我有两列多行的矩阵。第一列名称为idCombinaison,第二列名称为accuarcyaccuarcy具有浮点值。

现在,我想获取所有accuarcy == max value值的行。在某些情况下(如图所示),我可以有很多行,accuarcy的值等于max,所以我想获得所有这些行!

我尝试过:

maxAccuracy <- subset(accuarcyMatrix, accuarcyMatrix['accuarcy'] == max(accuarcyMatrix['accuarcy']))

但是这将返回一个空向量。有什么想法吗? enter image description here

3 个答案:

答案 0 :(得分:1)

模拟您的矩阵的可复制数据:

set.seed(123)
x <- matrix(sample(1:9, 30, T), 10, 3)
row.names(x) <- 1:10
colnames(x) <- LETTERS[1:3]

#    A B C
# 1  3 9 9
# 2  8 5 7
# 3  4 7 6
# ...

在矩阵对象中,您需要使用一种二进制方法来提取诸如data[a, b]之类的元素。以上面的数据为例,x["C"]将返回NA,而x[, "C"]将返回C列中的所有元素。因此,以下两个代码将生成不同的输出。

subset(x, x["C"] == max(x["C"]))
#   A B C (Empty)

subset(x, x[, "C"] == max(x[, "C"]))
#   A B C
# 1 3 9 9
# 4 8 6 9

答案 1 :(得分:0)

也许是这样吗?

library(dplyr)
accuarcyMatrix %>%
filter_at(vars(accuarcy),
          any_vars(.==max(.))
)

答案 2 :(得分:0)

Base R解决方案(尽管很可能是重复的):

accuarcyMatrix[ which(accuarcyMatrix$accuarcy == max(accuarcyMatrix$accuarcy) , ]

我猜您会希望将“准确度”更改为“准确度”