我有一个交易数据,我正在尝试计算所有可能的组合。我遇到的问题是它似乎过多地计算了我的组合。 例如:给定以下项目集:
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的次数#),但是我不确定为什么会这样我还有其他所有数字。
答案 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的原因。似乎您想做其他事情。