You need to enable JavaScript to run this app. R语言中如何按交易分组构建适配Apriori分析的0-1编码新数据框
优惠活动
大模型
产品
解决方案
定价
更多

R语言中如何按交易分组构建适配Apriori分析的0-1编码新数据框

R中实现长格式交易明细转Apriori适用的0/1编码宽表方法

本次需要处理的是逐行记录单商品的长交易表,目标是转换为**每行对应1笔独立交易、每列对应1类商品、单元格取值为0/1(1代表该交易购买了对应商品,0代表未购买)**的结构,完全适配Apriori关联分析的输入要求,以下是3种可落地的实现方案:

方案1:arules包原生事务格式转换(最适配关联分析场景)

这是针对关联分析设计的专用转换逻辑,自动处理同交易下的重复商品记录,生成的事务对象可直接传入Apriori算法,无需二次调整:

# 加载关联分析专用工具包
library(arules)

# 读入dput格式的示例交易数据
trans_df <- structure(list(Transaction = c(1L, 2L, 2L, 3L, 3L, 3L), Item = c("Bread", 
"Scandinavian", "Scandinavian", "Hot chocolate", "Jam", "Cookies"
), date_time = c("30/10/2016 09:58", "30/10/2016 10:05", "30/10/2016 10:05", 
"30/10/2016 10:07", "30/10/2016 10:07", "30/10/2016 10:07"), 
    period_day = c("morning", "morning", "morning", "morning", 
    "morning", "morning"), weekday_weekend = c("weekend", "weekend", 
    "weekend", "weekend", "weekend", "weekend"), Year = c("2016", 
    "2016", "2016", "2016", "2016", "2016"), Month = c("October", 
    "October", "October", "October", "October", "October")), row.names = c(NA, 
6L), class = "data.frame")

# 基于交易ID、商品列生成标准事务对象
txn <- transactions(
  eval = list(
    Transaction = trans_df$Transaction,
    Item = trans_df$Item
  )
)

# 如需导出为普通0/1数据框,执行以下转换:
binary_df <- as.data.frame(as(txn, "matrix") * 1)

注意:该方法会自动去重同交易下的重复商品记录,比如示例中交易2两次记录购买Scandinavian,最终只会在对应列记为1,不会出现重复计数为2的情况。

方案2:tidyverse管道操作转换(灵活度高)

适合需要在转换过程中同步加入字段筛选、清洗逻辑的场景,手动构建0/1编码的宽表:

library(tidyverse)

binary_df <- trans_df %>%
  # 按交易ID、商品分组,自动去重同交易下的重复商品记录
  count(Transaction, Item, name = "purchase_flag") %>%
  # 将商品列展开为独立的0/1编码列
  pivot_wider(
    names_from = Item,
    values_from = purchase_flag,
    values_fill = 0
  )

方案3:基础R内置函数转换(无额外包依赖)

如果不想安装第三方包,可直接用基础R的列联表功能实现转换:

# 生成交易-商品列联表
txn_crosstab <- table(trans_df$Transaction, trans_df$Item)
# 将所有购买记录(值>0)统一转成1,未购买补0
binary_df <- as.data.frame.matrix(1 * (txn_crosstab > 0))

转换结果说明

生成的编码表结构完全匹配需求:

  • 行维度为唯一交易ID(1、2、3…)
  • 列维度为所有出现过的商品类别(Bread、Scandinavian、Hot chocolate、Jam、Cookies)
  • 单元格取值仅为0或1,直接适配Apriori算法的输入格式要求

内容的提问来源于stack exchange,提问作者elliotjameees

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.10 23:36:01