我有以下格式的订单数据集:
Ordernumber; Category; # Sold Items
123; A; 3
123; B; 4
234; B; 2
234; C; 1
234; D; 5
...
因此,每个订单的行数与订单中的不同类别一样多。
现在,我想要计算每个类别对在一个订单中一起订购的频率。
最后,我希望得到一个"相关性"像这样的矩阵
A B C D
A 1
B 1 1 1
C 1 1
D 1 1
有没有一个好(简单)的想法?
非常感谢你!
答案 0 :(得分:1)
也许使用矩阵乘法可以实现:
dat <- read.table(header=T, text="Ordernumber; Category; Sold Items
123; A; 3
123; B; 4
234; B; 2
234; C; 1
234; D; 5", sep=";")
tt <- table(dat[1:2])
crossprod(tt) # t(tt) %*% tt
# Category
#Category A B C D
# A 1 1 0 0
# B 1 2 1 1
# C 0 1 1 1
# D 0 1 1 1
这具有对角线,但可以使用diag