将 arules::inspect 的输出捕获为 data.frame

Capture the output of arules::inspect as data.frame

中,OP 对 groupings/clusterings 感兴趣是基于它们一起订购的频率。可以通过 arules::inspect 函数检查此分组。

library(arules)
dataset <- read.transactions("8GbjnHK2.txt", sep = ";", rm.duplicates = TRUE)
f <- eclat(dataset, 
           parameter = list(
             supp = 0.001, 
             maxlen = 17, 
             tidLists = TRUE))
inspect(head(sort(f, by = "support"), 10))

数据集可以从https://pastebin.com/8GbjnHK2下载。

但是,无法将输出作为数据框轻松保存到另一个对象。

out <- inspect(f)

那么我们如何捕获 inspect(f) 的输出以用作数据框?

我们可以使用方法 labels 来提取 associations/groupings 和 quality 来提取质量度量(支持度和计数)。然后我们可以使用 cbind 将这些存储到数据框中。

out <- cbind(labels = labels(f), quality(f))
head(out)

#              labels  support count
# 1 {3031093,3059242} 0.001010    16
# 2 {3031096,3059242} 0.001073    17
# 3 {3060614,3060615} 0.001010    16
# 4 {3022540,3072091} 0.001010    16
# 5 {3061698,3061700} 0.001073    17
# 6 {3031087,3059242} 0.002778    44

将项目集强制转换为 data.frame 也会创建所需的输出。

> head(as(f, "data.frame"))
              items     support count
1 {3031093,3059242} 0.001010101    16
2 {3031096,3059242} 0.001073232    17
3 {3060614,3060615} 0.001010101    16
4 {3022540,3072091} 0.001010101    16
5 {3061698,3061700} 0.001073232    17
6 {3031087,3059242} 0.002777778    44