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を使用してaruleswrite.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)
このプロットの結果を次のようにそれを解決することができましたあり「」トップ周波数項目として、実際にはそうではなく、データの前処理の結果です。それを解決するための提案は非常に高く評価されるでしょう!
どのパッケージのバージョンを使用していますか?アイテムの頻度をプロットすると、卵、パン、バター、ミルク、ワインが得られます。 –
v1.2とv1.5からアップデートして問題を解決しました – xineers