向arules中的事务对象添加项目信息

向arules中的事务对象添加项目信息,r,arules,R,Arules,我正在使用arules包查找销售点零售数据中的关联规则。我从数据库中提取事务详细信息,然后放入事务对象中。我不熟悉arules,正在尝试找出如何在事务对象中填充itemInfo数据框。现在,我只是引入了事务和项目IDs(都是数字),它们提供的上下文很少。我希望能够添加一个项目描述,以及产品层次结构级别 以下是我今天使用的流程: 数据以以下格式来自数据库: Transaction_ID Item_ID -------------- ----------- 100

我正在使用
arules
包查找销售点零售数据中的关联规则。我从数据库中提取事务详细信息,然后放入
事务
对象中。我不熟悉
arules
,正在尝试找出如何在事务对象中填充
itemInfo
数据框。现在,我只是引入了
事务
项目ID
s(都是数字),它们提供的上下文很少。我希望能够添加一个项目描述,以及产品层次结构级别

以下是我今天使用的流程:

  • 数据以以下格式来自数据库:

    Transaction_ID     Item_ID
    --------------     ----------- 
    100                1
    100                2
    100                3
    101                2
    101                3
    102                1
    102                2
    
  • 要创建
    transaction
    对象,我使用下面的命令,如
    arules
    文档中所述:

    txdata <- as(split(txdata[, "Item_ID"], txdata[, "Transaction_ID"]), "transactions")
    

  • 当这些规则返回时,它们将按
    项目\u ID
    列出,这对我没有帮助。我希望能够通过
    ID
    和/或描述来显示它们。此外,您还想利用
    arules
    软件包内置的聚合功能。

    您可以使用itemInfo更改项目名称。以下是一个例子:

    R> df <- data.frame(
       TID = c(1,1,2,2,2,3), 
       item=c("a","b","a","b","c", "b")
     )
    R> trans <- as(split(df[,"item"], df[,"TID"]), "transactions")
    
    ### this is how you replace item labels and set a hierachy (here level1)
    R> myLabels <- c("milk", "butter", "beer")
    R> myLevel1 <- c("dairy", "dairy", "beverage")
    R> itemInfo(trans) <- data.frame(labels = myLabels, level1 = myLevel1)
    
    R> inspect(trans)
         items    transactionID
      1 {milk,                
         butter}             1
      2 {milk,                
         butter,              
         beer}               2
      3 {butter}             3
    
     ### now you can use aggregate()
     R> inspect(aggregate(trans, itemInfo(trans)[["level1"]]))
         items      transactionID
      1 {dairy}                1
      2 {beverage,              
         dairy}                2
      3 {dairy}                3
    
    R>df trans myLabels MyLevel 1 itemInfo(trans)检查(trans)
    项目事务ID
    1{牛奶,
    黄油}1
    2{牛奶,
    黄油,
    啤酒}2
    3{黄油}3
    ###现在可以使用aggregate()了
    R> 检查(聚合(trans,itemInfo(trans)[“level1”]]))
    项目事务ID
    1{dairy}1
    2{饮料,
    乳制品}2
    3{奶制品}3
    
    您可以使用
    类查找更多信息?交易记录
    ?聚合

    希望这有帮助,
    迈克尔

    这很有帮助,谢谢你。这似乎是一个基本问题,但我如何知道应用标签的顺序?我的数据集有数千项,所以我想确定我列出的标签顺序是否正确?这只是数据集中第一次出现的顺序吗?看起来我可以使用
    trans@itemInfo
    ,然后按此处显示的顺序分配标签。没错,您可以获取itemInfo,然后使用match以正确的顺序获取标签。当我使用aggregate for rules并对其进行检查时,它不会显示支持/信心等,任何原因都会导致数据(“杂货店”)##Aggregate rules rules@usct01:原因是无法从原始规则的度量值计算聚合规则的supp/conf/lift。您可以聚合数据,然后使用
    interestMeasures
    计算聚合规则的度量值。或者,您可以先聚合事务,然后创建规则。这些都将有相应的措施。
    R> df <- data.frame(
       TID = c(1,1,2,2,2,3), 
       item=c("a","b","a","b","c", "b")
     )
    R> trans <- as(split(df[,"item"], df[,"TID"]), "transactions")
    
    ### this is how you replace item labels and set a hierachy (here level1)
    R> myLabels <- c("milk", "butter", "beer")
    R> myLevel1 <- c("dairy", "dairy", "beverage")
    R> itemInfo(trans) <- data.frame(labels = myLabels, level1 = myLevel1)
    
    R> inspect(trans)
         items    transactionID
      1 {milk,                
         butter}             1
      2 {milk,                
         butter,              
         beer}               2
      3 {butter}             3
    
     ### now you can use aggregate()
     R> inspect(aggregate(trans, itemInfo(trans)[["level1"]]))
         items      transactionID
      1 {dairy}                1
      2 {beverage,              
         dairy}                2
      3 {dairy}                3