在一行中找到两个最大值,然后在同一列中找到不同的值

时间:2019-09-28 19:11:10

标签: r

我有一个数据框,问题是我想在一行中找到两个最大值,然后将这些值与这些列中另一行的值进行比较。


rows <- c("a","b","c","d","e","f","g","h","i")
x1 <- c(1,4,5,7,5,8,9,0,5)
x2 <- c(3,3,5,6,7,8,9,0,7)
x3 <- c(3,1,4,6,7,8,9,5,2)


df <- data.frame(x1=x1,x2=x2, x3=x3, row.names = rows)

在这里,我从“ a”行获得了两个最高值

sort(df["a",], decreasing = TRUE)[1:2]

然后,我想在“ e”行中找到属于这些列的值,其中“ a”具有前2个值(并且顺序相同)。

2 个答案:

答案 0 :(得分:2)

1) order应用于行a给出向量,当向量用作其参数的索引时将按排序顺序给出向量,因此将其应用于行{{ 1}},并获取最后2个元素。

e

2)如果问题中显示的结果是s,则另一种可能性是按其名称索引o <- order( df["a", ] ) tail(unlist( df["e", o] ), 2) ## x2 x3 ## 7 7

df

答案 1 :(得分:0)

我对r不熟悉,但是从理论上讲,您需要一种算法,该算法根据a的两个最高值交换整个列。

之后,要比较的其他行中的值将始终位于第1列和第2列。