2016-02-05 211 views
1

我正在做兩個矩陣的乘法,說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變量乘以matxb。 組1的x1和x2應該乘以組1的b1 b2。 是否有任何代碼可以輕鬆地代替按組分隔數據?

回答

1

我們可以通過「組」的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