2015-10-06 3 views
0

У меня есть файл excel с 7 столбцами. Первые три являются численными, а столбцы 4-7 являются категориальными. Я сохранил это в текстовый файл и загрузить его в R (с помощью RStudio, нажав на кнопку «Импорт набора данных» в среде), который запустил следующую командуСобственные данные в пакете arules для ruleInduction

data <- read.table("~/csectiondata.txt", quote="\"", comment.char="")* 

Теперь, я пытался использовать априорную (данные), и это ошибка, я получаю:

Error in asMethod(object) : column(s) 1, 2, 3 not logical or a factor. Use as.factor, as.logical or categorize first.

Я читал, что с помощью sapply и as.factor бы помочь, так что я сделал это:

data <- sapply(data, as.factor)* 

но теперь я получаю эту ошибку:

Error in t(as(from, "ngCMatrix")) : error in evaluating the argument 'x' in selecting a method for function 't': Error in asMethod(object) : cannot coerce 'NA's to "nsparseMatrix"

Я тоже пробовал transaction_data <- as(data, "transactions"), и я получаю то же самое.

"Error in asMethod(object)"

Я полностью потерян. Кто-нибудь может мне помочь?

+1

Попробуйте добавить некоторые из ваших данных к вопросу. Попробуйте 'dput (head (data))'. Нам гораздо легче помочь, если мы сами можем отследить проблему – jeremycg

ответ

0

Необходимо сначала подготовить свои данные. Составление правила правила может использовать только элементы и не работает с непрерывными переменными.

Например, элемент, описывающий лицо (т. Е. Рассматриваемый объект, называемый транзакцией), может быть высокий. Тот факт, что человек высок, будет закодирован в транзакции, содержащей товар высокий. Обычно это кодируется в матрице транзакций по значению TRUE. Вот почему as.transaction может обрабатывать логические столбцы, потому что он предполагает, что столбец обозначает элемент. Функция также может преобразовывать столбцы с номинальными значениями (то есть коэффициенты) в ряд двоичных элементов (по одному для каждого уровня). Поэтому, если у вас есть номинальные переменные, вам нужно убедиться, что они являются факторами (а не символами или цифрами), используя что-то вроде data[,"a_nominal_var"] <- factor(data[,"a_nominal_var"]).

Непрерывные переменные необходимо сначала дискретировать. Элементом, являющимся результатом дискретизации, может быть возраст> 18, а в колонке только TRUE или FALSE. В качестве альтернативы это может быть фактором с уровнями возраст < = 18, 50 => возраст> 18 и возраст> 50. Они автоматически преобразуются в 3 элемента, по одному для каждого уровня. Посмотрите на функцию discretize() в arules.