【发布时间】:2023-03-25 15:19:01
【问题描述】:
我有几个历史订单信息,其中两列作为数据框:OrderID 和 Item。它包含大约 100 万条记录。我正在尝试用这个数据框进行关联规则挖掘,为了利用 arules 包,我必须将大数据框转换为事务格式。但是,转换需要很长时间,我尝试使用具有相同结构的较小数据帧(300K 行),转换需要几秒钟才能完成,但对于较大的数据帧,它需要永远。由于我将在更大的数据集上进行关联规则挖掘,有没有更有效的方法来实现这一点?
我正在使用一台功能相当强大的机器,并且成功地处理了更小的数据帧。 下面是我用来进行转换的代码。
library(tidyverse)
library(arules)
OrderID<-c("0001","0001","0002","0002")
Item<-c("ProductA","ProductB","ProductB","ProductC")
df<-data.frame(OrderID,Item)
df$OrderID<-as.factor(df$OrderID)
df$Item<-as.factor(df$Item)
df_trans<-as(split(df[,"Item"],df[,"OrderID"]),"transactions")
【问题讨论】:
-
等了好久,报错:Error: cannot allocate vector of size 43.3 Gb
-
也许读写交易技巧可以帮助她? r-bloggers.com/data-frames-and-transactions。您可能必须先创建要写入的数据,这可以使用 dplyr 完成: df %>% group_by(OrderID) %>% summarise(transactions = paste0(Item, collapse = ", "))