查找R中矩阵行名的每个元素的秩

Finding the rank of each element of row names of a matrix in R

我有一个 2000 行和 6900 列的数字矩阵。我正在使用 R,我想找到每列中行名称的每个元素的排名。

例如;如果元素“A”是第一列中的最大值,第二列中的第三大值和第三列中的第五大值。 我想在前 3 列中用 1、3、5 替换“A”的值。我想对所有行名和所有列执行相同的操作。基本上,我想在每一列中找到一个值的排名。

有办法吗?我尝试了 rank、which、sort 和 order 功能,但无法成功。

我正在使用(并且更喜欢)R,但 Python 也可以。

提前致谢

这个怎么样。

根据您的描述得出的数据示例:

set.seed(1)
m <- matrix(sample(1:25), 5, dimnames = list(LETTERS[1:5], 1:5))
m
#>    1  2  3  4  5
#> A 25 11 16  9  8
#> B  4 14 10 15 13
#> C  7 18  6 12 21
#> D  1 22 19 17  3
#> E  2  5 23 20 24

解决方案:

apply(m, 2, rank)
#>   1 2 3 4 5
#> A 5 2 3 1 2
#> B 3 3 2 3 3
#> C 4 4 1 2 4
#> D 1 5 4 4 1
#> E 2 1 5 5 5