8

私は単純な行列を持っています、例えば

test <- matrix(c("u1","p1","u1","p2","u2","p2","u2",
                 "p3","u3","p1","u4","p2","u5","p1",
                 "u5","p3","u6","p3","u7","p4","u7",
                 "p3","u8","p1","u9","p4"),
               ncol=2,byrow=TRUE) 
colnames(test) <- c("user","product")
test1<-as.data.frame(test)

テスト:

   user   product
1  u1      p1
2  u1      p2
3  u2      p2 
4  u2      p3
5  u3      p1
6  u4      p2
7  u5      p1
8  u5      p3
9  u6      p3
10 u7      p4
11 u7      p3
12 u8      p1
13 u9      p4

p1&p2、p2& p3 など、製品ペアを一緒に購入したユーザーの数をカウントしたい...

table(test1$product,test1$product)私にこれをください:

     p1   p2  p3  p4
 p1   4   0   0   0
 p2   0   3   0   0
 p3   0   0   4   0
 p4   0   0   0   2

次のように正しい結果を得るにはどうすればよいですか:

     p1   p2  p3  p4
 p1   4   1   1   0
 p2   1   3   1   0
 p3   1   1   4   1
 p4   0   0   1   2
4

3 に答える 3

3

Ananda のソリューションは優れています (軽量で、外部パッケージを必要としません) が、私は別のソリューションを検討しています。これは隣接行列と呼ばれていると思います(私が間違っている場合は、賢い人は自由に編集してください)。

library(qdap)
adjmat(table(test1))$adjacency

##        product
## product p1 p2 p3 p4
##      p1  4  1  1  0
##      p2  1  3  1  0
##      p3  1  1  4  1
##      p4  0  0  1  2
于 2013-11-14T15:49:50.380 に答える