我似乎无法计算我的项目集的频率

时间:2019-09-10 23:36:21

标签: r arules mining market-basket-analysis

我有一个交易数据,我正在尝试计算所有可能的组合。我遇到的问题是它似乎过多地计算了我的组合。 例如:给定以下项目集:

A {1,2,3}

B {1,2,3,4}

如果我想计算{1,2,3}一起出现的次数,它的计数为2,而不是我希望的1。

下面以创建虚拟数据为例

t1 <- data.frame(ID = c("A","A", "A", "B", "B", "B", "B"), num = c(1,2,3,1,2,3,4))
transactions<-split(t1[,"num"], t1[,"ID"], sep =",")
test <- apriori(transactions, parameter = list(support =.0000000001, minlen=3, maxlen = 3, target = 'frequent'))
inspect(test)

在此示例中,我期望{1,2,3}的计数为1(一起购买1,2,3的次数#),但是我不确定为什么会这样我还有其他所有数字。

2 个答案:

答案 0 :(得分:0)

这是使用基数R的一种方法。将num列折叠为一个用逗号分隔的字符串,用ID进行计数,并使用table

进行计数
df1 <- aggregate(num~ID, t1, function(x) toString(unique(x)))
table(df1$num)

#   1, 2, 3 1, 2, 3, 4 
#         1          1 

我们也可以使用dplyr来完成

library(dplyr)

t1 %>%
  group_by(ID) %>%
  summarise(num = toString(unique(num))) %>%
  count(num)

答案 1 :(得分:0)

频繁的项目集挖掘对子集进行计数。 {1,2,3}是两个事务的子集,这就是为什么计数为2的原因。似乎您想做其他事情。