Я создаю анализ рынка для большого набора данных, содержащего 2 столбца (OrderID и Product).В наборе более миллиона строк, и с помощью пакета apriori я смог создать эффективный список правил, используя меньшее подмножество данных, однако при попытке использовать полный набор я не могу использовать функцию разделенияагрегировать данные по OrderID.Есть ли другая функция с похожей функциональностью для разделения, которая может обрабатывать столько данных?Код, указанный ниже:
MyData <- read.csv("C:/Market Basket Analysis/BOD16-Data.csv") #Abreviated for proprietary reasons
View(MyData)
library(arules)
summary(MyData)
#Using the split function, we are able to aggregate the transactions, so that each
#product on the transaction is grouped into its respective, singular, transID
start.time <- Sys.time() #Timer used to measure run time on the split function
aggregateData <- split(MyData$Product, MyData$OrderID)
end.time<- Sys.time()
time.taken = end.time- start.time
time.taken
#Using the split function, we are able to aggregate the transactions, so that each
#product on the transaction is grouped into its respective, singular, transID
aggregateData <- split(MyData$Product, MyData$OrderID)
head(aggregateData)
#Need to convert the aggregated data into a form that 'Arules' package
#can accept
txns <- as(aggregateData, "transactions")
#txns <- read.transactions("Trans", format = "basket", sep=",", rm.duplicates=TRUE)
summary(txns)
#Apriori Algorithem generates the rules
Rules <- apriori(txns,parameter=list(supp=0.0025,conf=0.4,target="Rules",minlen=2))
inspect(Rules)
РЕДАКТИРОВАТЬ: мои данные будут выглядеть следующим образом:
OrderId Product
1 1234
1 1357
1 2468
1 1324
2 1234
2 2468
3 4321
4 5432
5 1357
AggregateData should be:
[1]
1234,1357,2468,1324
[2]
1234, 2468
[3]
4321
[4]
5432
[5]
1357
В настоящее время я использую функцию разделения для достижения этих результатов, но при применении к большемуустановить время выполнения превысило 30 минут, прежде чем я остановил скрипт.