Как подготовить данные транзакции для правил

Я копаю вопросы уже 3 дня, так что наконец-то набралась смелости задать здесь. У меня есть набор данных из 379 584 записей, и я хочу передать его «правилам» в R.

Это выглядит так: Структура следующаяA. Если я попытаюсь использовать формат = "корзина", я сделать следующее

sales <- read.csv("sales.csv", sep=";")
s1 <- split(sales$product_id, sales$order_id)
s1 <- unique(s1)

tr <- as(s1, "transactions")

Это дает мне ошибку «невозможно привести список с транзакциями с повторяющимися элементами»

B. Если я выберу формат = "single"

tr <- read.transactions("sales.csv",
         sep=";", format = "single", cols = c(4,2))

У меня такая же ошибка "не удается привести список с транзакциями с дублирующимися элементами"

Я уже проверил файлы на наличие дубликатов, и Excel не может их найти. Я считаю, что проблема тривиальна, но я просто застрял.


person Glib Buriak    schedule 28.04.2016    source источник
comment
Повторяющиеся элементы для (A) могут быть связаны с безымянным списком (s1), созданным с помощью функции разделения. Попробуйте вставить имена как names(s1) <- levels(sales$order_id) перед tr <- as(s1, "transactions")   -  person Adam Quek    schedule 28.04.2016
comment
К сожалению, та же проблема.   -  person Glib Buriak    schedule 28.04.2016


Ответы (1)


По-видимому, уникальный (s1) вызывает некоторые проблемы с вашим кодированием. Это требуется?

Мне удалось создать транзакцию, просто набрав эту строку.

sales <- structure(list(sku = c(207426L, 207422L, 207424L, 9793L, 33186L, 
72406L), product_id = c(15729L, 15725L, 15727L, 15999L, 15983L, 
15992L), item_id = 1:6, order_id = c(1L, 1L, 1L, 2L, 2L, 2L)), 
.Names = c("sku", "product_id", "item_id", "order_id"), 
class = "data.frame", row.names = c(NA, -6L))

s1 <- split(sales$product_id, sales$order_id)
#s1 <- unique(s1)

tr <- as(s1, "transactions")
tr

transactions in sparse format with
 2 transactions (rows) and
 6 items (columns)

Если действительно требуется уникальность, запустите это:

s1 <- lapply(s1, unique)
person Adam Quek    schedule 28.04.2016
comment
Адам, это действительно помогло! Кажется, потребовалась только эта строка кода: s1 ‹- lapply(s1, уникальный) Большое спасибо - person Glib Buriak; 28.04.2016