通过比较两个矩阵对排名进行排名

时间:2017-11-17 08:54:53

标签: r

有一个矩阵A,如:

      [,1] [,2]  [,3]  [,4] 
[1,]     1    4     7     6 
[2,]     2    5     8     1
[3,]     5    1     7     8

和矩阵B类似:

      [,1] 
[1,]     8
[2,]     6
[3,]     1
[4,]     7
[5,]     5
[6,]     2
[7,]     3
[8,]     4

我想创建一个类似于A的矩阵C,用矩阵B中A值的等级替换A值。结果应为:

matrix C 
      [,1] [,2]  [,3]  [,4] 
[1,]     3    8     4     2 
[2,]     6    5     1     3
[3,]     5    3     4     1

1 个答案:

答案 0 :(得分:3)

您可以使用match并调整尺寸:

C <- match(A, B)
dim(C) <- dim(A)

-

示例:

> set.seed(123)
> (A <- matrix(sample(1:8), ncol = 4))
     [,1] [,2] [,3] [,4]
[1,]    3    8    4    2
[2,]    6    5    1    7
> (B <- matrix(sample(1:8), ncol= 1))
     [,1]
[1,]    5
[2,]    4
[3,]    6
[4,]    3
[5,]    8
[6,]    2
[7,]    1
[8,]    7
> (C <- match(A, B))
[1] 4 3 5 1 2 7 6 8
> (dim(C) <- dim(A))
[1] 2 4
> C
     [,1] [,2] [,3] [,4]
[1,]    4    5    2    6
[2,]    3    1    7    8