在数据框中查找三列的“最佳”组合

时间:2014-10-15 13:11:17

标签: r max min

我有一个包含三列的数据框,例如

a <- c(1,214,124,124,64,43)
b <- c(0.1,0.9,0.8,0.25,0.3,0.11)
c <- c(1000,12311,2221,5676,3234,7346)
myframe <- data.frame(a,b,c)

现在我想找到a,b和c的最佳组合。最佳组合是a最高,b最低,c最高。如果有多个组合,其中b和c是最低的最高组合,则a应该是决定因素。

如何实现这一目标?

2 个答案:

答案 0 :(得分:3)

根据您的修改进行了更新。如果要按最高a,最低b,最低c(按该顺序应用条件)对数据行进行排序,请使用:

with(myframe, order(-a, b, c))

输出(行顺序):

[1] 2 4 3 5 6 1

如果您只想要“最佳”单行(即上面排序的第一个结果):

myframe[with(myframe, order(-a, b, c))[1],]

输出:

    a    b     c
2 214 0.90 12311

答案 1 :(得分:0)

找到&#34;最佳组合,其中a为最高,b为最低,c为最高&#34;:

> apply(myframe, 1, function(x) ifelse(x[1]==max(myframe$a) && x[2]==min(myframe$b) && x[3]==max(myframe$c), x,""  ))
[1] "" "" "" "" "" ""

目前的数据框架中似乎没有这样的组合。