как конвертировать data.frame в транзакции для arules

r transactions attributes arules

41223 просмотра

3 ответа

Я читаю данные из CSV-файла, данные имеют 3 столбца, один - идентификатор транзакции, два других - продукт и категория продукта. Мне нужно преобразовать это в транзакции, чтобы использовать aprioriфункцию в arules . При конвертации в транзакции отображается ошибка:

dat <- read.csv("spss.csv",head=TRUE,sep="," , as.is = T)
dat[,2] <- factor(dat[,2])
dat[,3] <- factor(dat[,3])
spssdat <- dat[,c(1,2,3)]
str(spssdat)

'data.frame':   108919 obs. of  3 variables:
 $ Transaction_id: int  3000312 3000312 3001972 3003361 3003361 3003361 3003361 3003361 3003361 3004637 ...
 $ product_catalog : Factor w/ 9 levels "AIM","BA","IM",..: 1 1 5 7 7 7 7 7 7 1 ...
 $ product      : Factor w/ 332 levels "ACM","ACTG/AIM",..: 7 7 159 61 61 61 61 61 61 7 ...

trans4 <- as(spssdat, "transactions")

Error in as(spssdat, "transactions") : 
  no method or default for coercing “data.frame” to “transactions”

Если данные имеют только два столбца, они могут работать:

trans4 <- as(split(spssdat[,2], spssdat[,1]), "transactions")

Но я не знаю, как конвертировать, когда у меня есть 3 столбца. Обычно есть дополнительные столбцы, такие как атрибуты категорий, атрибуты клиентов. поэтому столбец обычно больше 2 столбцов. нужно найти правила между несколькими столбцами.

Автор: dennis ding Источник Размещён: 12.11.2019 09:38

Ответы (3)


21 плюса

Я нашел некоторую информацию, которая работала для меня на этом сайте . Позвольте мне скопировать соответствующий пункт:

Кадр данных может быть либо в нормализованной ( одиночной ) форме, либо в виде плоского файла ( корзины ).
Когда файл находится в форме корзины, это означает, что каждая запись представляет транзакцию, в которой элементы в корзине представлены столбцами.
Когда набор данных находится в одной форме, это означает, что каждая запись представляет один отдельный элемент, и каждый элемент содержит идентификатор транзакции .

Чтобы загрузить транзакции из файла, используйте read.transactions. И в вашем, и в моем деле дело в единой форме.
Я использовал следующий код для загрузки файла .csv как transactions:

trans = read.transactions("some_data.csv", format = "single", sep = ",", cols = c("transactionID", "productID"))

Чтобы полностью понять вышеуказанную команду, взгляните на read.transactionsруководство, доступное после ввода ?read.transactionsв консоли R.

Автор: Michał Rybak Размещён: 31.03.2014 12:38

4 плюса

Я пытался сделать то же самое, и после того, как я учел все свои столбцы в data.frame, с которым я работал, я все еще не мог привести его к itemMatrix транзакций. Затем я понял, что никогда не перезагружал пакет «arules» для сеанса, в котором я работал. Очень глупая ошибка, но я просто хотел упомянуть об этом на случай, если кто-то столкнется с той же проблемой, попробуйте сначала простые вещи:

library("arules")
Автор: Charlie Размещён: 17.02.2015 02:15

0 плюса

Вы должны сначала преобразовать Transaction_id в факторную переменную.

Автор: Farmer Bob Размещён: 26.08.2013 08:05
Вопросы из категории :
32x32