Я использую сценарий R в Power Query, чтобы выполнить некоторые преобразования данных и вернуть масштабированную таблицу. Мой код R выглядит так:
# 'dataset'
Кажется странным, что это не возвращается. Беглый просмотр в сети дал это 3-минутное видео на ютубе, который использует тот же метод, что и вы. При дальнейшем поиске источника можно встретить Документация Майкрософт, что дает возможную причину возникновения проблемы.
When preparing and running an R script in Power BI Desktop, there are a few limitations:
Only data frames are imported, so make sure the data you want to import to Power BI is represented in a data frame
Columns that are typed as Complex and Vector are not imported, and are replaced with error values in the created table
Это кажутся наиболее очевидными причинами. Держу пари, что в вашем наборе данных нет сложных столбцов, я полагаю, что причина, скорее всего, в предыдущем. Быстрое воссоздание вашего набора данных показывает, что функции scale
превращают ваш набор данных в объект класса matrix
. Это сохраняется cbind
, и поэтому вывод относится к классу matrix
, а не data.frame
.
>dataset <- as.data.frame(abs(matrix(rnorm(1000),ncol=4)))
>class(dataset)
[1]"data.frame"
>library(dplyr)
>df_normal <- log(dataset + 1) %>%
> select(c(2:4)) %>%
> scale
>class(df_normal)
[1] "matrix"
>df_normal <- cbind(dataset[,1], df_normal)
>output <- df_normal
>class(output)
[1] "matrix"
Казалось бы, простым исправлением будет добавление output <- as.data.frame(output)
, поскольку это соответствует документации powerBI. Может быть, в конце понадобится return
лайк. Добавление строки в конце скрипта, просто указывающей output
, должно исправить это.
Для пояснения, я считаю, что следующий отредактированный скрипт (ваш) должен возвращать ожидаемые данные
# 'dataset' contém os dados de entrada neste script
library(dplyr)
df_normal <- log(dataset+1) %>%
select(c(2:4)) %>%
scale
df_normal <-cbind(dataset[,c(1)], df_normal)
output <- as.data.frame(df_normal)
#output ##This line might be needed without the first comment
Я рад, что смог помочь. Документация кажется очень скудной. Я бы посоветовал посмотреть другие примеры, некоторые из которых доступны здесь. К сожалению, у меня недостаточно опыта работы с PowerBI, чтобы дать более подсказки. Тем не менее, из двух приведенных выше пунктов вы можете выполнять любые вычисления, а затем преобразовывать данные в data.frame
. Если бы кто-то использовал линейную модель и хотел бы получить коэффициенты, у вас мог бы быть столбец, в котором указан коэффициент, чтобы впоследствии его можно было идентифицировать напрямую в powerBI.
Power BI — отличный инструмент для BI (как и должно быть). Я считаю, что, сочетая свои возможности с точки зрения очистки и представления данных с алгоритмами R, он может быть невероятно мощным (поскольку интерфейс R предназначен для специалистов по данным). Как перенести данные из R в Power BI — это то, что я сейчас изучаю, так что еще раз большое спасибо за вашу помощь!
Спасибо за вашу помощь! Я искал документацию, но не смог найти, где определяются «набор данных» и «вывод». В любом случае, теперь кажется очевидным, что они означают таблицу, которую мы только что импортировали, и таблицу, которую мы хотим экспортировать в Power Query. Кстати, вы знаете, где я могу найти другой подходящий синтаксис для интеграции R-скриптов с Power Query? Теперь, чтобы ответить на ваши комментарии выше, вы абсолютно правы! Я не понимал, что нормализация изменит df на матрицу (и почему). Но преобразовал его обратно в df, сделал это, спасибо!