我有一个2000行6900列的数字矩阵。我使用的是R,我想在每列中找到行名称的每个元素的秩。
例如;如果元素";A";是第一列中的最大值、第二列中的第三大值和第三列中的五大值。我想替换"0"的值;A";前3列为1,3,5。我想对所有行名和所有列执行相同的操作。基本上,我想在每一列中找到一个值的排名。
有办法做到吗?我尝试了排序、排序和排序功能,但没能成功
我使用(并且更喜欢(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