Ошибка при использовании arules - Ошибка в asMethod (объект) - PullRequest
0 голосов
/ 18 мая 2018
library(arules)
library(rattle)

data <- read.csv('R/347_347.csv', header = TRUE, stringsAsFactors = TRUE)
Data <- data[c(3:23)]
#error in here
trans <- as(Data, "transactions")
Error in asMethod(object) : 
  column(s) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 not logical or a factor. Discretize the columns first.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Посмотрите на этот пример, который использует некоторые данные из пакета arules:

library(arules);
data("AdultUCI");
str(AdultUCI)
Adult = as(AdultUCI, "transactions");

AdultUCI <- dplyr::select(AdultUCI, "workclass", "marital-status", "occupation")
str(AdultUCI)

Adult = as(AdultUCI, "transactions");

Во-первых, вы увидите, что при первой попытке преобразовать его в транзакции метод завершится с ошибкой и выдаст ту же ошибку.как твой.Но если вы выбираете только факторы («рабочий класс», «семейное положение», «род занятий»), метод работает.

0 голосов
/ 18 мая 2018

Проблема заключается в типах данных ваших столбцов.

Вам необходимо сначала преобразовать их в отдельные типы столбцов, например factor (см. https://www.stat.berkeley.edu/classes/s133/factors.html).Другой вариант - logical, т.е. логические значения TRUE или FALSE.

Например:

my_data_frame$x <- as.factor(my_data_frame$x)

Это необходимо сделать для каждого категориального столбца, напримерте, которые указаны по порядковому номеру в сообщении об ошибке.

Например:

data(iris)

iris[,1] <- as.factor(iris[,1])
iris[,2] <- as.factor(iris[,2])
iris[,3] <- as.factor(iris[,3])
iris[,4] <- as.factor(iris[,4])
iris[,5] <- as.factor(iris[,5])

iris = as(iris, "transactions")

iris
transactions in sparse format with
 150 transactions (rows) and
 126 items (columns)

Или, еще более компактно:

data(iris)
iris = as(data.frame(lapply(iris, as.character), stringsAsFactors=T), "transactions")
...