如何将arules包中稀疏矩阵形式的Groceries数据集转换为表格形式可视化查看?
将arules包Groceries稀疏数据集转换为普通可查看/可视化表格的实现方法
Groceries数据集在arules中存储为transactions类型的稀疏itemMatrix结构,无法直接以普通表格形式浏览或适配常规可视化工具,可根据使用场景选择以下两种转换方案:
前置准备
首先加载依赖包与数据集:
# 加载arules包 library(arules) # 加载内置Groceries数据集 data(Groceries) # 确认对象结构 class(Groceries) # 输出:[1] "transactions" "itemMatrix"
方案1:转换为宽格式稠密数据框
转换后每一行对应1笔独立交易,每一列对应1种在售商品,单元格值为逻辑值,标记该笔交易是否购买了对应商品,适合逐笔核查交易构成、绘制商品分布热图。
转换代码:
# 稀疏transactions对象强制转为稠密矩阵 g_dense_matrix <- as(Groceries, "matrix") # 矩阵转常规R数据框 g_wide_df <- as.data.frame(g_dense_matrix)
转换后直接运行View(g_wide_df)即可打开全表浏览,表结构为9835行(总交易数)、169列(总商品数)。
方案2:转换为长格式整洁数据框
转换后无空值单元格,每一行对应「某笔交易中购买某件商品」的单条记录,完全适配ggplot2等绘图工具的输入规范,适合开展商品频次统计、品类销售占比类可视化。
转换代码:
# 将transactions转为列表结构,每个元素存单笔交易的商品集合 g_trans_list <- LIST(Groceries) # 拼接为长表 g_long_df <- data.frame( transaction_id = rep(names(g_trans_list), lengths(g_trans_list)), item = unlist(g_trans_list) )
转换后表结构为43367行(总实际购买条目数)、2列,可直接开展统计计算,比如绘制Top10热销商品条形图:
# 统计Top10热销商品 top_10_items <- sort(table(g_long_df$item), decreasing = TRUE)[1:10] barplot(top_10_items)
注意事项
- 转换后的普通数据框仅适用于查看与可视化场景,后续开展关联规则挖掘时仍建议使用原始稀疏
transactions对象,避免稠密表内存占用过高、计算效率下降 - 若觉得宽表列数过多浏览不便,可先通过
itemFrequency()计算商品支持度,筛选高频商品列后再查看,减少无效信息干扰
内容的提问来源于stack exchange,提问作者user366312
相关产品推荐
相关产品推荐

