2013-08-19 20 views
2

我想挖掘特定的rhs规则。文档中有一个例子证明了这是可能的,但仅限于特定情况(如下所示)。首先一个数据集来说明我的问题:R arules,我的特定列的唯一规则

input <- matrix(c(rep(10001,6) , rep(10002,3) , rep(10003,3), 100001,100002,100003,100004,100005,100006,100002,100003,100007,100002,100003,100008,rep('a',6),rep('b',6)), ncol=3) 
colnames(input) <- c(letters[1:3]) 
input <- as.data.frame(input) 

现在我可以创建规则:

r <- apriori(input) 

要查看的规则:

inspect(r) 

我想有只矿井规则b = ...在rhs上。对于特定值,可以通过添加:

appearance = list(rhs = c("b=100001", "b=100002"),default="lhs") 

到apriori命令。如果我想找到他们的课程,我还必须调整信心。问题在于列b中的元素数量。在这个例子中,我可以手动输入“b = .....”格式的所有元素,但是我不能在我自己的数据中。

我尝试使用unique()获取b的值,然后将其提供给rhs,但它会生成一个错误,因为我给出的值如下:“100001”“100002”而不是“b = 100001”“ b = 100002" 。

有没有一种方法只从特定列中获取rhs规则?

如果没有,是否有一个简单的方法来从'当前?'生成'想'?

current <- c("100001", "100002", "100003", "100004", "100005", "100006", "100007", "100008") 
want <- c("b=100001", "b=100002", "b=100003", "b=100004", "b=100005", "b=100006", "b=100007", "b=100008") 

有点关系是这样的问题:Creating specific rules with arules in r 但是,这对我来说同样的问题,只是以不同的方式。

回答

1

您可以使用subset

r <- apriori(input, parameter = list(support = 0.1, confidence = 0.1)) 
inspect(subset(r, subset = rhs %pin% "b=")) 
# lhs  rhs   support confidence  lift 
# 1 {} => {b=100002} 0.2500000 0.2500000 1.000000 
# 2 {} => {b=100003} 0.2500000 0.2500000 1.000000 
# 3 {c=b} => {b=100002} 0.1666667 0.3333333 1.333333 
# 4 {c=b} => {b=100003} 0.1666667 0.3333333 1.333333 

对于你的第二个问题,你可以使用paste

paste0("b=", current) 
# [1] "b=100001" "b=100002" "b=100003" "b=100004" "b=100005" "b=100006" "b=100007" 
# [8] "b=100008"