Я подготовил набор данных для чтения в виде транзакций с использованием пакета arules в R. Однако одна из моих предварительных обработок данных вызывает проблему, когда я использую команду itemFrequencyplot, в частности, элемент с самой высокой частотой - " ". У кого-нибудь есть предложения по решению этой проблемы?
Исходные данные:
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")
Я делаю следующее преобразование
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
использовал write.table для создания файла csv без имен столбцов для чтения через правила
write.table(newdata, "transactions.csv", row.names = FALSE, col.names = FALSE, sep = ",")
использование пакета arules для чтения 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)
результат этого графика имеет " " как элемент с максимальной частотой, что на самом деле не так и является результатом предварительной обработки моих данных. Предложения по ее устранению будут весьма признательны!