Shawn Brar
Shawn Brar

Reputation: 1420

Row standardize a Sparse Matrix

I have the following sparse matrix;-

library(Matrix)
 a <- sparseMatrix(i = c(1, 1, 2, 2, 3, 3, 3, 3, 4, 5, 5),
                   j = c(1, 2, 2, 3, 2, 3, 4, 5, 3, 1, 5), x = 1)

I want to divide the rows by their row sums so that this matrix becomes the following sparse matrix:-

b <- sparseMatrix(i = c(1, 1, 2, 2, 3, 3, 3, 3, 4, 5, 5),
                  j = c(1, 2, 2, 3, 2, 3, 4, 5, 3, 1, 5),
                  x = c(0.5, 0.5, 0.5, 0.5, 0.25, 0.25, 0.25, 0.25, 1, 0.5, 0.5))

How can I row standardize a sparse matrix in R

Upvotes: 1

Views: 283

Answers (1)

Ronak Shah
Ronak Shah

Reputation: 389135

You can divide a by rowwise sum.

b <- a/rowSums(a)
b
#5 x 5 sparse Matrix of class "dgCMatrix"
                            
#[1,] 0.5 0.50 .    .    .   
#[2,] .   0.50 0.50 .    .   
#[3,] .   0.25 0.25 0.25 0.25
#[4,] .   .    1.00 .    .   
#[5,] 0.5 .    .    .    0.50

Upvotes: 1

Related Questions