如何为arules准备交易数据

How to prepare transaction data for arules

我已经挖了 3 天的问题,所以终于有勇气在这里问了。 我有一个包含 379,584 个条目的数据集,我想将它提供给 R

中的 "arules"

看起来像这样 A. 如果我尝试使用格式 = "basket",我会执行以下操作

sales <- read.csv("sales.csv", sep=";")
s1 <- split(sales$product_id, sales$order_id)
s1 <- unique(s1)

tr <- as(s1, "transactions")

这给我一个错误"can not coerce list with transactions with duplicated items"

乙。如果我使用格式 = "single"

tr <- read.transactions("sales.csv",
         sep=";", format = "single", cols = c(4,2))

我也有同样的错误"can not coerce list with transactions with duplicated items"

我已经检查了文件是否有重复项,但 Excel 找不到。我相信麻烦是微不足道的,但我只是被困住了。

显然 unique(s1) 给您的编码带来了一些问题。是必需的吗?

我设法通过散列那一行来创建交易。

sales <- structure(list(sku = c(207426L, 207422L, 207424L, 9793L, 33186L, 
72406L), product_id = c(15729L, 15725L, 15727L, 15999L, 15983L, 
15992L), item_id = 1:6, order_id = c(1L, 1L, 1L, 2L, 2L, 2L)), 
.Names = c("sku", "product_id", "item_id", "order_id"), 
class = "data.frame", row.names = c(NA, -6L))

s1 <- split(sales$product_id, sales$order_id)
#s1 <- unique(s1)

tr <- as(s1, "transactions")
tr

transactions in sparse format with
 2 transactions (rows) and
 6 items (columns)

如果确实需要唯一性,运行改为:

s1 <- lapply(s1, unique)