事件日志列表

时间:2013-04-10 23:23:23

标签: r data-mining

所以我不确定在 R 中使用哪个制表功能来解决我的问题。基本上我有一组数据(事件日志),其中包含各种用户ID作为参考,然后是每个事件的每个用户的特定产品。我想创建一个表格(产品x产品),以便特定用户购买两种不同的产品,相应的表格获得加+1 ......即

user1  prod2
user2  prod1
user1  prod1

所以基本上是条目(prod1,prod2)= 1(和(prod2,prod1)= 1,以及对称性)....对角线将是1或0不是非常重要....我可以写这个循环可能会遍历数据,但如果有一个函数已经我想知道。

1 个答案:

答案 0 :(得分:3)

读入数据;使用xtabs按产品(列)表将其转换为用户(行);获取表格与自身的交叉积,并减少任何大于1比1的元素:

# read in data
Lines <- "user1  prod2
user2  prod1
user1  prod1
user3  prod2
user4  prod3
user4  prod2
user5  prod4
"
DF <- read.table(text = Lines)

# compute required matrix
pmin(crossprod(xtabs(~., DF)), 1)

最后一行返回:

       V2
V2      prod1 prod2 prod3 prod4
  prod1     1     1     0     0
  prod2     1     1     1     0
  prod3     0     1     1     0
  prod4     0     0     0     1