矩阵乘法后的百分比值

时间:2015-04-27 16:33:14

标签: r matrix apply matrix-multiplication

通过矩阵乘法,我得到以下矩阵,我们可以说,它显示了购买产品A的客户,迟早还购买了产品B,产品C等等。显然,对角线值代表特定产品的所有购买的100%。我正在寻找一种将所有值转换为百分比值的方法。有任何想法吗?我确实看过apply(),但没有找到实现对角线值的方法。

> # Create a matrix with zeros and ones
> r <- 500
> c <- 10
> t1 <- matrix(rbinom(r*c,1,0.5),r,c)
> colnames(t1) <- letters[1:10]
> head(t1)
     a b c d e f g h i j
[1,] 1 1 1 0 0 1 1 1 1 0
[2,] 0 0 0 1 1 0 0 0 1 1
[3,] 0 1 1 1 0 1 1 1 1 0
[4,] 1 0 1 1 1 0 0 1 0 1
[5,] 0 1 0 1 0 0 0 0 0 0
[6,] 1 0 1 0 1 0 1 0 1 1
> # Matrix multiplication
> t2 <- t(t1)%*%t1
> t2
    a   b   c   d   e   f   g   h   i   j
a 242 130 121 114 133 117 119 126 123 112
b 130 248 121 115 128 121 113 127 114 119
c 121 121 236 108 115 117 115 117 112 117
d 114 115 108 228 116 117 114 110 118  99
e 133 128 115 116 258 129 124 132 122 130
f 117 121 117 117 129 251 123 115 128 125
g 119 113 115 114 124 123 245 128 130 116
h 126 127 117 110 132 115 128 248 123 113
i 123 114 112 118 122 128 130 123 251 116
j 112 119 117  99 130 125 116 113 116 246

1 个答案:

答案 0 :(得分:3)

t3 <- apply(t2, 2, function(v) v/max(v))

for (i in 1:ncol(t2)) t2[,i] <- t2[,i]/t2[i,i]

我假设你想要不对称矩阵,即购买产品X且购买产品Y的人的百分比(这与购买产品Y的产品Y的百分比不同)。