如何将R数据帧导出到Power Query表

时间:2019-05-08 18:08:36

标签: r powerbi powerquery

我正在Power Query中使用R脚本进行一些数据转换并返回一个缩放表。 我的R代码是这样的:

# '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 <- df_normal 

这在R Studio中可以正常工作,并且按预期方式获得了df_normal数据框。

但是,在Power Query中,我得到了一个空表!

r

如何将数据框导出到表中?

1 个答案:

答案 0 :(得分:2)

这似乎无法恢复,这似乎很奇怪。在线快速浏览了一下this 3 minute youtube video,它使用了与您使用的相同的方法。进一步搜索一个源,可能会遇到Microsoft Documentation,这提供了可能存在问题的可能原因。

  

在Power BI Desktop中准备和运行R脚本时,存在一些限制:

     
      
  • 仅导入数据框,因此请确保要导入到Power BI的数据在数据框中表示

  •   
  • 类型为“复杂”和“向量”的列不会导入,并在创建的表中替换为错误值

  •   

这些似乎是最明显的原因。相信您的数据集中没有复杂的列,我相信先验可能是原因。快速浏览数据集表明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