Power BI - Визуальный сценарий сценария R - Априори

Я использую визуализацию сценария r в PowerBI. Я могу запустить приведенный ниже код в R, и он работает, но я получаю указанную ниже ошибку при работе в PowerBI. Я хочу показать результаты априори наглядно. Оба приведенных ниже теста отлично работают в R, но НЕ в визуальном элементе сценария R из PowerBI. Есть предположения?

если я попробую # test2.

library(Matrix)
library(arules)
library(plyr)
library(gridExtra)

df_itemList <- ddply(dataset,c("SALESID"),function(df1)paste(df1$ITEMID))
#test1
#df_itemList  = sapply(df_itemList , function(x) gsub(" ", ",", x))
#basket_rules <- apriori(df_itemList, parameter = list(sup=0.1,conf=0.5,target="rules", maxlen=5));

#test2
txn = read.transactions(df_itemList, rm.duplicates = TRUE, format = "basket", sep = ",", cols = 1);
basket_rules <- apriori(txn, parameter = list(sup=0.1,conf=0.5,target="rules", maxlen=5));

df_basket <- as(basket_rules,"data.frame")
grid.table(df_basket)

Сообщение об ошибке: ошибка сценария R.

Прикрепленный пакет: 'arules'

Следующие объекты замаскированы из package: base:

abbreviate, write

Ошибка в readLines (файл, кодировка = кодировка): 'con' не является соединением Вызовы: read.transactions -> lapply -> readLines Выполнение остановлено

Если я попробую # test1 ...

library(Matrix)
library(arules)
library(plyr)
library(gridExtra)

df_itemList <- ddply(dataset,c("SALESID"),function(df1)paste(df1$ITEMID))
#test1
df_itemList  = sapply(df_itemList , function(x) gsub(" ", ",", x))
basket_rules <- apriori(df_itemList, parameter = list(sup=0.1,conf=0.5,target="rules", maxlen=5));

#test2
#txn = read.transactions(df_itemList, rm.duplicates = TRUE, format = "basket", sep = ",", cols = 1);
#basket_rules <- apriori(txn, parameter = list(sup=0.1,conf=0.5,target="rules", maxlen=5));

df_basket <- as(basket_rules,"data.frame")
grid.table(df_basket)

Затем я получаю сообщение об ошибке ниже.

Сообщение об ошибке: ошибка сценария R.

Прикрепление пакета: 'arules'

Следующие объекты замаскированы из package: base:

abbreviate, write

Ошибка в asMethod (объект): столбцы 2, 3, 4 не логичны или не являются фактором. Сначала выделите столбцы. Вызовы: apriori -> as -> asMethod Выполнение остановлено


person manderson    schedule 29.10.2018    source источник
comment
Вызов read.transactions в опубликованном вами коде закомментирован, но ваше сообщение об ошибке содержит этот вызов. Закомментированный код является частью того, что вы запускали? Если это так, ошибка не связана с R vs PowerBI и просто связана с тем, что вы передали не имя файла в вызов read.transactions, а фрейм данных.   -  person Konrad Rudolph    schedule 29.10.2018
comment
@KonradRudolph Я проводил 2 теста ... Я обновил свой исходный пост.   -  person manderson    schedule 29.10.2018
comment
Я собираюсь развернуть этот отчет в сервисе Powerbi ... Я не могу использовать apriori, не вызывая файл? Разве я не могу просто использовать набор данных?   -  person manderson    schedule 29.10.2018
comment
Я настоятельно призываю вас прочитать виньетку arules, которая объясняет, как правильно вызвать apriori, и, в частности, как создать объект «транзакции», который можно передать функции apriori (раздел 5.2; хотя вы также можете передать фрейм данных напрямую). - Во всяком случае, это не имеет ничего общего с R vs Power BI.   -  person Konrad Rudolph    schedule 29.10.2018
comment
Я взгляну. Благодарю.   -  person manderson    schedule 29.10.2018


Ответы (1)


Правильный способ использования read.transactions в сценарии PowerBI R - преобразовать фрейм данных в матрицу, а затем в класс транзакций. Это делается для того, чтобы передать экспорт в CSV, а затем прочитать его в read.transactions ... Ссылка здесь

library(Matrix)
library(arules)
library(plyr)
library(dplyr)
library(gridExtra)

itemList <- dataset
#itemList <- read.csv("ItemListAll.csv", header=TRUE, sep=",")

# Converting to a Matrix ####
itemList$const = TRUE

# Remove duplicates
dim(itemList)
orders <- unique(itemList)
dim(itemList)

# Need to reshape the matrix
itemList_max_prep <- reshape(data = itemList,
                           idvar = "SALESID",
                           timevar = "ITEMID",
                           direction = "wide")

# Drop the SALESID
itemList_matrix <- as.matrix(itemList_max_prep[,-1])

# Clean up the missing values to be FALSE
itemList_matrix[is.na(itemList_matrix)] <- FALSE

# Clean up names
colnames(itemList_matrix) <- gsub(x=colnames(itemList_matrix),
                               pattern="const\\.", replacement="")

itemList_trans <- as(itemList_matrix,"transactions")

#inspect(itemList_trans)

basket_rules <- apriori(itemList_trans, parameter = list(sup=0.01,conf=0.5,target="rules", minlen=3));
df_basket <- as(basket_rules,"data.frame")
df_basket$support <- ceiling(df_basket$support * 100)
df_basket$confidence<- ceiling(df_basket$confidence * 100)
df_basket$lift<- round(df_basket$lift, digits = 2)
df_basket <- df_basket[rev(order(df_basket$support)),];
grid.table(head(df_basket));
person manderson    schedule 29.10.2018