2012-04-20 74 views
1

我正在嘗試使用函數read.transactions來讀取.txt文件。這是我的文件的結構:你會如何處理這與r arules包中的read.transactions?

1121,1141,1212,1311,1343,2111,2171,2213,2215,2311,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 
1111,1112,1126,1145,1146,1181,1213,1441,2122,2322,3311,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 
1172,2131,2173,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 
1141,1223,1416,2322,2323,112701,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 

我使用這行代碼進行了這一點:

tr <- read.transactions("disco.txt", format = "basket", sep=',',rm.duplicates= TRUE) 

,但我所得到的是這樣的事情(inspect(head(tr))):

1 {,  
    1121, 
    1141, 
    1212, 
    1311, 
    1343, 
    2111, 
    2171, 
    2213, 
    2215, 
    2311} 
2 {,  
    1111, 
    1112, 
    1126, 
    1145, 
    1146, 
    1181, 
    1213, 
    1441, 
    2122, 
    2322, 
    3311} 
. 
. 
. 

我的問題是:如何從這些事務中刪除'空'項目集?這個想法後來應用了apriori算法,以獲得有吸引力的規則。你知道如果算法apriori可以處理這個問題嗎?我已經將Apriori算法應用於剛剛向您展示的事務,但其中許多算法對於包含空項目集是無用的。

非常感謝提前! 關心!

回答

2

我認爲尾隨逗號是這裏的問題。這就是爲什麼我認爲它最簡單的,如果你只是修剪「」末,用read.transactions()

它不是特別優雅的新/修改後的文件閱讀,但它的工作:

library("arules") 

temp <- readLines("stack.dat") 
for (i in 1:length(temp)) 
    temp[i] <- gsub(",*$", "", temp[i]) 
writeLines(temp, "stack_mod.dat") 

tr <- read.transactions("stack_mod.dat", format = "basket", sep=',', rm.duplicates=TRUE) 

你覺得可以嗎?

+0

我感謝您的幫助@gncs。現在沒關係。這是有用的。我想避免循環行數,但用我的文件(由192836行組成)它工作得很好。 – Nestorghh 2012-04-23 14:11:34