Как получить список предметов в транзакции в пакете arules

Я знаю, что вы можете увидеть содержание каждой транзакции, используя inspect и затем извлекать элементы самостоятельно, но есть ли удобный способ получить список всех элементов, которые относятся к транзакции?

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():

введите описание изображения здесь

Теперь с большим transactions объект:

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

Существует пакет R под названием data.table которые позволяют вам делать этот тип агрегации транзакций.

Например:

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

Один из способов получить список всех элементов, которые принадлежат транзакции:

Агрегировать предметы по транзакции. Таблица данных

Другой способ, по функции 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

Возможное простое решение, если ваша цель просто просмотреть все элементы, содержащиеся во всех транзакциях (то есть полный список элементов), заключается в следующем:

unique(unlist(as(a_list, "list")))
Другие вопросы по тегам