我使用以下代码并接收适当的关联规则:
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)的值(对于每个记录)。如果每条记录有多个规则,我想添加记录符合它的最后一条规则。
答案 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的列索引,然后返回最后一行。