Ich habe Transaktionsdaten, die in einer Kantenform sind, und ich muss eine transaktionsbasierte Sparse-Matrix erstellen, die mit dem arules R-Paket verwendet werden kann. Zur Zeit verwende ich "Spread" aus dem Tidyr-Paket, um die Kantenliste in Matrix mit jeder Zeile als "Korb-ID zu konvertieren. Dann ich nach der Konvertierung in eine logische, da ich keine Mengeninformationen mit Arules verwenden kann, konvertiere ich die" Transaktion "basierte Datentyp. Bitte beachten Sie ein Beispiel für R-Code unten.Konvertieren von Kantenliste in eine Ares-Transaktion spärliche Adjazenzmatrix
Meine Frage ist, dass dies für kleine Sätze Korb/Transaktionen funktioniert, aber wenn ich viele mehr habe, verursacht es Speicherprobleme aufgrund der" Spread "-Funktion. ich frage mich, ob es einen Speicher/ressourceneffiziente Art und Weise ist, um die ursprüngliche Kante Blick auf die Transaktionen Datentyp zu konvertieren, die verwendet? Vielen Dank im Voraus für alle Anregungen 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
ist 'Tabelle' besser? 'table (TransEdgeList [1: 2])' oder 'xtabs (~ BasketID + Item, data = TransEdgeList, sparse = TRUE)' – user20650