【发布时间】:2016-06-09 16:18:20
【问题描述】:
我的数据:
datas=structure(list(Id = 1:4, Product1 = structure(c(3L, 2L, 2L, 1L
), .Label = c("1,2,5", "1,3", "5"), class = "factor"), Product2 = structure(c(4L,
3L, 1L, 2L), .Label = c("A", "A,B,E", "B,D", "D"), class = "factor")), .Names = c("Id",
"Product1", "Product2"), class = "data.frame", row.names = c(NA,
-4L))
它在视觉上给出(人们会购买两种产品,每种产品都有一个或几个原因。对于产品 1(原因 = 1、2、3、4、5)和产品 2(原因 = A、B、C、D ,E) 和原因可以结合。
Id Product1 Product2
1 5 D
2 1,3 B,D
3 1,3 A
4 1,2,5 A,B,E
我想把它重塑如下
对于每个 ID 计算:
Id= 1
A B C D E
1 0 0 0 0 0
2 0 0 0 0 0
3 0 0 0 0 0
4 0 0 0 0 0
5 0 0 0 1 0
Id= 2 : here 0.25 because we have B1,B3,D1,D3 so 1/4 for each one
A B C D E
1 0 0,25 0 0,25 0
2 0 0 0 0 0
3 0 0,25 0 0,25 0
4 0 0 0 0 0
5 0 0 0 1 0
on so on Id = 4, we have : a1,a2,a5,b1,b2,b5,e1,e2,e5, so 1/9 for each one.
A B C D E
1 0,11+0,5 0,11+0,25 0 0,25 0,11
2 0,11+0 0,11+0 0 0 0,11
3 0,5 0,25 0 0,25 0
4 0 0 0 0 0
5 0,11+0 0,11+0 0 1 0,11
如何轻松做到这一点,或者我应该计算每个矩阵并在每次迭代中求和?
非常感谢!
【问题讨论】: