Reputation: 407
I have a table in R, and I would like to change each row so that the numbers come up proportionally as opposed to the total quantity.
For example, if my first row is 2,2,0 I want to make it .5,.5,0
Similarly, if a row is 4,15,1 I want to make it .2,.75,.05
Is there a way to do this to the entire table at once? I know this is probably pretty easy but I've been working on it for a long time.
Upvotes: 3
Views: 402
Reputation: 145775
If your data is a matrix,
my_data = matrix(rpois(12, lambda = 5), nrow = 4)
then this is one way to do it:
my_data / rowSums(my_data)
Upvotes: 4
Reputation: 17611
You can try this:
# sample data
a <- rbind(c(2,2,0), c(4,15,1))
# solution
a / apply(a, 1, sum)
# [,1] [,2] [,3]
#b 0.5 0.50 0.00
#a 0.2 0.75 0.05
Upvotes: 4