如何获取包arules中事务中的项列表

时间:2016-08-18 01:18:42

标签: r arules market-basket-analysis

我知道您可以使用inspect查看每笔交易的内容,然后自己提取项目,但有没有方便的方法来获取属于交易的所有项目的列表?

3 个答案:

答案 0 :(得分:2)

a_list <- list( # Create example data
      c("a","b","c"),
      c("a","b"),
      c("a","b","d"),
      c("c","e"),
      c("a","b","d","e")
      )

## set transaction names
names(a_list) <- paste("Tr",c(1:5), sep = "")
a_list

## coerce into transactions
trans1 <- as(a_list, "transactions")

## analyze transactions
summary(trans1)
image(trans1)  

# if you want an actual list structure:
trans1 <- as(a_list, "list")

这是来自image()

的情节

enter image description here

现在有一个更大的transactions对象:

data("Adult")
adult_list <- as(Adult, "list")

答案 1 :(得分:2)

有一个名为data.table的R包允许您执行此类事务聚合。

例如:

data <- data.frame( 
                  transactionID = c("1001", "1001", "1002", "1003", "1003", "1003"),
                  item= c("A", "B", "B", "A", "B", "C")
                  )

获取属于交易的所有项目列表的一种方法:

按交易汇总项目。 Data.table

enter image description here

其他方式,通过函数split

data.aggregate <- split(data$item, data$transactionID)
> data.aggregate
$`1001`
[1] A B
Levels: A B C

$`1002`
[1] B
Levels: A B C

$`1003`
[1] A B C
Levels: A B C

答案 2 :(得分:0)

如果您的目标只是查看所有交易中包含的所有项目(即完整的项目列表),那么可能的简单解决方案如下:

unique(unlist(as(a_list, "list")))