我有边缘形式的事务数据,并且需要创建基于事务的稀疏矩阵,该矩阵可以与arules R包一起使用。目前我正在使用tidyr软件包中的“spread”将边缘列表转换为矩阵,并将每行转换为“basket ID”,然后将其转换为逻辑,因为我无法将数量信息与arules一起使用,所以将其转换为“交易“为基础的数据类型,请参阅下面的R代码示例:将边缘列表转换为arules事务稀疏邻接矩阵
我的问题是,这适用于小集篮子/交易,但是当我有更多时,由于”传播“功能导致内存问题。我想知道是否有与原边视图到arules用途?在此先感谢您的任何建议交易数据类型转换了更大的内存/资源有效方式!
## Load libraries
library(tidyr)
library(arules)
## Create an example of the transactions that I am analizing
TransEdgeList = data.frame(BasketID=c(1,1,2,2,3,3,3),
Item=c(10,11,10,12,10,11,13),
Qty=c(1,1,2,3,1,2,1))
#convert to something that arules can transform
BasketDataFrame = spread(TransEdgeList, Item, Qty)
#convert to logical
BasketDataFrame[, 2:dim(BasketDataFrame)[2]]=
!is.na(BasketDataFrame[, 2:dim(BasketDataFrame)[2]])
#convert to a transaction sparse matrix that arules can use
BasketMatrix = as(BasketDataFrame[, 2:dim(BasketDataFrame)[2]], "transactions")
BasketMatrix
是'table'还好吗? '表(TransEdgeList [1:2])'或'xtabs(〜BasketID + Item,data = TransEdgeList,sparse = TRUE)' – user20650