矩阵乘以组
问题描述:
我正在做两个矩阵的乘法,说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")
我想要做什么是group
变量乘以matx
和b
。 组1的x1和x2应该乘以组1的b1 b2。 是否有任何代码可以轻松地代替按组分隔数据?
答
我们可以通过“组”的unique
值循环,既子集的矩阵和做%*%
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