在r中找到第n个最低值的列

时间:2018-03-19 18:13:31

标签: r

我留下了一个问题,找到了值最低的列,这里是链接find the column with lowest value in r

这对我来说非常有用。但是,我有一个类似但不同的问题。如果我想找到具有第二低,第三最低值和第n最低值的列。怎么做?

3 个答案:

答案 0 :(得分:4)

以下是获取每行中三个最低列的列号的示例。

set.seed(1234)
M = matrix(sample(20,20), ncol=4)
M
     [,1] [,2] [,3] [,4]
[1,]    3   10    7    9
[2,]   12    1    5   17
[3,]   11    4   20   16
[4,]   18    8   15   19
[5,]   14    6    2   13
t(apply(M, 1, function(x) head(order(x),3)))
     [,1] [,2] [,3]
[1,]    1    3    4
[2,]    2    3    1
[3,]    2    1    4
[4,]    2    3    1
[5,]    3    2    4

答案 1 :(得分:0)

一个整合的解决方案:

library(dplyr)
library(tidyr)

df <-  as.data.frame(matrix(sample(20,20), ncol = 4))

df %>%
  tidyr::gather(column, value) %>%
  arrange(value) %>%
  filter(row_number() == 2) %>%
  pull(column)

答案 2 :(得分:0)

允许多个可能列具有$ k $ -th最低值的解决方案:将whicharr.ind=T

一起使用
set.seed(1234)
M = matrix(sample(50, 100, replace=T), ncol=4)

## columns with the 6th lowest value, e.g. 6 (two instances in cols 1 & 4)
which(M == unique(sort(M))[6], arr.ind = T)

给出:

> which(M == unique(sort(M))[6], arr.ind = T)
     row col
[1,]   1   1
[2,]  20   4