2015-10-07 54 views
7

好吧,所以我搜索了很多並且想要在銷售數據上運行arules。我只需要以正確的格式正確獲取數據,並使用正確的「因素」或「變量」和籃子形式進行設置。如何將交易數據準備到arules的購物籃

現在我有銷售數據與訂單#然後裏面的項目。每個訂單都是唯一的(每個新訂單,一個新的#會被創建幷包含零件編號),但是相同的項目顯然可以以多個訂單出現。

目前,我的數據設置是這樣的:

Order# Part# PartDescription
 
1   A  PartA 
1   B  PartB 
1   G  PartG 
2   R  PartR 
3   A  PartA 
3   B  PartB 
4   E  PartE 
5   Y  PartY 
6   A  PartA 
6   B  PartB 
6   F  PartF 
6   V  PartV 

所以,R不喜歡這種形式,我必須得到它的形式arules和數據分析將接受。

是的,我將其保存爲文本文件,並嘗試.csv文件,但如果我可以如何來準備,或操縱它在RStudio一步的指示得到一步那簡直太​​好了。

我讀,它的假設是在一個筐的形式,例如..

1(A,B,G)
2(R)
3(A,B)
4(E )
5(Y)
6(A,B,F,V)

如果這是不準確的請指正。我明白了,但我只需要一步一步的指導,我似乎無法找到任何地方。我試過使用dplyr和tidyr。我對數據分析有很好的理解,但需要RStudio的更直接的幫助,所以如果我可以一步步地做到這一點,我會進一步理解這一點。

+0

我也有Excel中的數據挖掘插件,所以如果我能做到在那裏的任何準備讓我知道。謝謝。 – V1k1

+0

我假設你至少有數據加載到r作爲data.frame?如果沒有,嘗試'數據< - read.csv(「myfile.csv」,comment.char =「」)' – jeremycg

+0

我只需點擊「導入數據集」,到目前爲止的迴應是將我的數據放入正確的籃子格式。我是否需要將它作爲data.frame加載到r中以避免更多問題?我應該用什麼方法將它加載到r中?這是來自Excel的文本文件,它應該是.csv嗎?我的父親出現在正確的列/行中。我應該選擇哪些導入設置?謝謝! – V1k1

回答

6

看看幫助頁面的「交易」的數據類型,如何讓您的數據的例子:

library(arules) 
?transactions 

你的類型,你想split按訂單,然後使用as來讓它進入一個交易清單:

trans <- as(split(data[,"Part"], data[,"Order"]), "transactions") 
inspect(trans) 
    items  transactionID 
1 {A,B,G} 1    
2 {R}  2    
3 {A,B}  3    
4 {E}  4    
5 {Y}  5    
6 {A,B,F,V} 6 
+0

謝謝!它用測試虛擬數據運行它。現在我正在使用真實數據(282,292條目)。如果我還有更多關於準備的問題,如果我沒有找到,我會回頭看看。但主要問題是從我可以說的答案。現在讓它在更大的數據集上運行。謝謝!我很驚訝,我真的找不到那個地方。很簡單! – V1k1

+0

因此,它適用於我在此論壇上製作的測試虛擬數據。但使用我的真實數據,以同樣的方式,只是使用真實的數據,我得到這個錯誤 「asMethod(對象)中的錯誤: 無法強制與重複項目的交易清單」 我不明白爲什麼?虛擬數據中有重複的項目,它爲我放置在一個籃子裏,那麼爲什麼它不會對我的數據做同樣的事情呢?我認爲它基於重複的Order#將籃子放在一起,並將Part#放入籃子中,就像我的虛擬數據一樣。它的字面意思與僞數據一樣。 – V1k1

+0

等一下,我發現Part#中的一個是Order#的一個,所以他們在那裏複製。我在Order#和PartDescription上運行了trans命令,運行時間更長,但結果出現相同的錯誤。我在Excel中檢查了Part#等於Order#的位置,並將Order#更改爲唯一值。我仍然得到我以前的評論中指出的錯誤.. – V1k1

1

我有很多與脅迫(如麻煩,「爲(數據名稱,‘交易’。)

我掩蓋。這是由於我有重複的記錄(即,當數據處於「單一」格式時,在相同的轉換中多次購買同一物品)的事實。

這是最終爲我工作:

Transactions<- read.transactions("Data with tx ids, item names, in 
         single format.csv", 
         rm.duplicates= TRUE, sep=",", 
         format = "single", cols = c(7,9)); 

(在第7欄TX ID,在第9欄項目名稱)