查找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
我有一个 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