2

関数で .txt ファイルを読み込もうとしています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そのアルゴリズムがRこの問題を処理できるかどうか知っていますか? 先ほどお見せしたトランザクションにアプリオリ アルゴリズムを適用しましたが、それらの多くは空の項目セットを含むという点では役に立ちません。

よろしくお願いします!よろしく!

4

1 に答える 1

3

ここでは、末尾のコンマが問題だと思います。そのため、最後に「、」をトリムして、新しい/変更されたファイルを読み込むのが最も簡単だと思います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)

それでよろしいですか?

于 2012-04-22T14:45:01.147 に答える