我留下了一个问题,找到了值最低的列,这里是链接find the column with lowest value in r
这对我来说非常有用。但是,我有一个类似但不同的问题。如果我想找到具有第二低,第三最低值和第n最低值的列。怎么做?
答案 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最低值的解决方案:将which
与arr.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