2016-08-25 67 views
1

我有一個csv中的數據庫子集,它有幾個不同的列,我想將數據轉換爲事務。我已經讀過this post將csv轉換爲arules的交易

library(arules) 
library(arulesViz) 

trans = read.transactions("data.csv", format = "single", sep = ",", 
        cols = c("EMAIL", "BRAND")) 

但是沒能到我的數據提出的方案轉換:

CATEGORY BRAND SKU EMAIL   SEGMENT SALES 
shorts  gap  1564 [email protected] 1   1 
tops  gap  8974 [email protected] 1   2 
shoes  nike 3245 [email protected] 4   3 
jeans  levis 8956 [email protected] 4   1 

現在我想用arules瞭解哪些品牌客戶一般買在一起。爲了使用arules我需要我的數據轉換,所以它看起來如下:

gap, gap 
nike, levis 

任何人可以幫助我弄清楚如何我的數據轉換成相應的?

回答

1

如果我們考慮作爲一種事務ID列EMAIL,我們可以改變你的data.frametransactions類:

library(arules) 
trans <- as(split(df[,"BRAND"], df[,"EMAIL"]), "transactions") 

# To explore the rules we could do 
rules <- apriori(trans) 
inspect(rules) 
# lhs  rhs  support confidence lift 
#1 {levis} => {nike} 0.5  1   2 
#2 {nike} => {levis} 0.5  1   2 
+0

感謝,這transofmred以正確的格式的數據。然而,我收到以下消息:警告消息:在asMethod(對象):刪除事務中的重複項目',當我嘗試'檢查'規則'[1:5]'我收到以下錯誤'錯誤插槽(x, s)[i]:下標越界'你知道是什麼造成了這個? – Davis

+0

你不能有相同的項目在gap => gap中預測對方,因此刪除了重複項。至於第二個,你需要在'apriori()'調用中改變'support ='和'confidence ='參數的值來獲得更多的規則。 – mtoto

+0

謝謝你,這使得更有意義。我修復了'confidence ='和'support ='參數。我如何從交易數據集中刪除重複項?在使用'df < - unique(df [,c(2,4)])'將數據轉換爲事務之前,我可以簡單地刪除重複項嗎? – Davis