2016-10-30 13 views
0

Rでarulesパッケージを使用してトランザクションとして読み取るためのデータセットを用意しましたが、itemFrequencyplotというコマンド、特に最も高い頻度のデータを使用すると、アイテムは ""です。この問題を解決するための提案がありますか?トランザクションのためのデータセットを準備するR

オリジナルデータ:

data <- as.data.frame(matrix(NA, nrow = 10, ncol = 3)) 
colnames(data) <- c("Customer", "OrderDate", "Product") 
data$Customer <- c("John", "John", "John", "Tom", "Tom", "Tom", "Sally", "Sally", "Sally", "Sally") 
data$OrderDate <- c("1-Oct", "2-Oct", "2-Oct", "2-Oct","2-Oct", "2-Oct", "3-Oct", "3-Oct", "3-Oct", "3-Oct") 
data$Product <- c("Milk", "Eggs", "Bread", "Butter", "Eggs", "Milk", "Bread", "Butter", "Eggs", "Wine") 

私は、次の変換

arulesを使用してarules

write.table(newdata, "transactions.csv", row.names = FALSE, col.names = FALSE, sep = ",") 

経由で読み込むための列名なしでcsvファイルを作成するためにはwrite.tableを使用

library(reshape2) 
library(dplyr) 

newdata <- data %>% 
    group_by(Customer, OrderDate) %>% 
    mutate(ProductValue = paste0("Product", 1:n())) %>% 
    dcast(Customer + OrderDate ~ ProductValue, value.var = "Product") %>% 
    arrange(OrderDate) 

newdata[is.na(newdata)] <- " " 
newdata <- newdata[ , 3:6] 
newdata[sapply(newdata, is.character)] <- lapply(newdata[sapply(newdata, is.character)], as.factor) #converting is.character columns into as.factor 

を作りますcsvファイルをトランザクションとして読み取るパッケージ

library(arules) 

transactiondata <- read.transactions("transactions.csv", sep = ",", format = "basket") 

は動作しません - エラーをスローし、stackoverflowの上の前のクエリを読んだ後、私は

transactiondata <- read.transactions("transactions.csv", sep = ",", format = "basket", rm.duplicates = TRUE) 

itemFrequencyPlot(transactiondata, topN = 5) 

このプロットの結果を次のようにそれを解決することができましたあり「」トップ周波数項目として、実際にはそうではなく、データの前処理の結果です。それを解決するための提案は非常に高く評価されるでしょう!

+0

どのパッケージのバージョンを使用していますか?アイテムの頻度をプロットすると、卵、パン、バター、ミルク、ワインが得られます。 –

+0

v1.2とv1.5からアップデートして問題を解決しました – xineers

答えて

1

私はそれを(トランザクションのためのマニュアルページの例以下)このようにします:

data_list <- split(data$Product, paste(data$OrderDate, data$Customer)) 
trans <- as(data_list, "transactions") 
inspect(trans) 

    items     transactionID 
[1] {Milk}     1-Oct John 
[2] {Bread,Eggs}    2-Oct John 
[3] {Butter,Eggs,Milk}  2-Oct Tom  
[4] {Bread,Butter,Eggs,Wine} 3-Oct Sally 

itemFrequencyPlot(trans, topN = 5) 

は、この情報がお役に立てば幸い!

関連する問題