将关联规则与源记录匹配

时间:2016-06-05 08:42:28

标签: r apriori arules

我使用以下代码并接收适当的关联规则:

library("arules")
data("Adult")
    rules <- apriori(Adult,parameter = list(supp = 0.5, conf = 0.9, target = "rules"))
  labels(rules)

有50条规则。 我想回到源数据:

Adult3<-as.data.frame(as(Adult,"matrix"))

并向Adult3$RUL_NUM添加新列。此列将包括记录符合的相关规则(在本例中为1到50)的值(对于每个记录)。如果每条记录有多个规则,我想添加记录符合它的最后一条规则。

1 个答案:

答案 0 :(得分:1)

您可能想要查看is.superset函数。例如

is.superset(Adult, lhs(rules))

将为您提供一个逻辑矩阵,表明每个交易哪个规则是“相关的”(即,LHS中的所有项目都存在)。

修改:如果您想匹配整个规则,请使用以下建议的Avi代码:

is.superset(Adult, lhs(rules))

要获取匹配的最后一条规则的id(数字),您可以在超集矩阵上使用(或多或少)直接R代码:

w <- sapply(apply(is.superset(Adult, rules), MARGIN = 1, which), tail, n = 1)

此代码查找每行中所有1的列索引,然后返回最后一行。