2015-07-17 2 views
1

У меня есть данные в следующем формате:Как преобразовать данные csv в формат рыночной корзины?

TxnId Items 
    1  a 
    1  b 
    1  c 
    2  r 
    2  t 

где «TxnId» и «Элементы» столбцы. Я импортировал файл в R и выполнял следующие команды:

df_fact <- data.frame(lapply(MyData,as.factor)) 
df_trans <- as(df_fact, 'transactions') 

Когда я запустил команду apriori, она выдает сообщение об ошибке.

rules = apriori(df_trans, parameter=list(supp=0.95, conf=0.95, target=”rules”)) 
inspect(rules) 
#NULL 
inspect(rules[1:5]) 
Error in inspect(rules[1:5]) : 
    error in evaluating the argument 'x' in selecting a method for function 'inspect': Error in slot(x, s)[i] : subscript out of bounds 

Также дайте мне знать, в каком формате R принимает данные.

+0

Результатом 'проверки (правил)' является 'NULL'. Ваш объект пуст. –

ответ

2

Он должен работать так:

MyData <- read.table(header = TRUE, text = " 
TxnId Items 
1  a 
1  b 
1  c 
2  a 
2  b 
") 
library(arules) 
df_trans <- as(split(MyData$Items, MyData$TxnId), "transactions") 
rules <- apriori(df_trans, parameter=list(supp=0.95, conf=0.95, target="rules")) 
inspect(rules) 
# lhs rhs support confidence lift 
# 1 {} => {a}  1   1 1 
# 2 {} => {b}  1   1 1 
# 3 {a} => {b}  1   1 1 
# 4 {b} => {a}  1   1 1 

Вам может понадобиться, чтобы ослабить supp и/или conf найти правила в наборе данных.

0

У меня было много проблем с принуждением (например, «как (dataname,„сделка“..).

Я считаю, что это связанно с тем, что у меня есть повторяющиеся записи (то есть, тот же элемент приобрел более чем один раз в том же транзакцию, когда данные находятся в «одном» формате)

Это то, что, наконец, работал для меня.

Transactions<- read.transactions("Data with tx ids, item names, in 
         single format.csv", 
         rm.duplicates= TRUE, sep=",", 
         format = "single", cols = c(7,9)); 

(ТХ идентификатор в столбце 7, пункт названия в колонке 9)