比较 2 个矩阵并根据组条件用 1 或 0 填充矩阵

Compare 2 matrices and fill a matrix with 1 or 0 based on group condition

我想知道是否有办法避免在循环中使用嵌套 ifs 来解决这个问题:

如果单元格上的值大于矩阵B的平均值,我想将MatrixA的值更改为1,否则,将0。如果MatrixA中的单元格[1,2]属于第5组,然后检查MatrixB中第5组第2列的平均值并输入1或0,依此类推。

MatrixA = cbind(sample(1:11,100,replace = T),matrix(data = rnorm(100*13),nrow = 100,ncol = 13 ))

我们假设这些是 MatrixA 中每一列的平均值 MatrixB = cbind(1:11,matrix(data = rnorm(11*13),nrow = 11,ncol = 13 ))

我希望正确表述我的问题。谢谢。

尝试

(MatrixA>MatrixB[match(MatrixA[,1],MatrixB[,1]),])*1L

     [,1] [,2] [,3] [,4] [,5]
[1,]    0    0    1    1    1
[2,]    0    1    1    0    1
[3,]    0    1    1    1    1
[4,]    0    1    1    0    1
[5,]    0    1    1    1    0
...

注意:第一列(groups)全为0,可以重新替换回来得到groups。