代码之家  ›  专栏  ›  技术社区  ›  wan

按组的矩阵乘法

  •  1
  • wan  · 技术社区  · 10 年前

    我在做两个矩阵的乘法,比如beta和Xs。 但我的数据有一个组变量,我按组进行了回归。 这是我要做的一个例子。

    matx <- matrix(c(1,1,2,1,3,4,2,5,6,2,7,8,3,9,10,3,11,12),nrow=6,ncol=3,byrow=T)
    colnames(matx) <- c("group","x1","x2")
    b <- matrix(c(1,3,4,2,5,6,3,0,0),nrow=3,ncol=3,byrow=T)
    colnames(b) <- c("group","b1","b2")
    

    我想做的是乘法 matx b 通过 group 变量 组1的x1和x2应乘以组1的b1和b2。 是否有任何代码可以简化数据的分组?

    1 回复  |  直到 10 年前
        1
  •  1
  •   akrun    10 年前

    我们可以循环通过 unique “group”的值,同时子集矩阵和do %*%

    sapply(unique(matx[,'group']), function(i) 
              matx[matx[,1]==i,-1]%*% b[b[,1]==i, -1])
    #     [,1] [,2] [,3]
    #[1,]   11   61    0
    #[2,]   25   83    0