Nun*_*ira 7 r powerquery powerbi
我在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
Run Code Online (Sandbox Code Playgroud)
这在R Studio中可以正常工作,并且按预期方式获得了df_normal数据框。
但是,在Power Query中,我得到了一个空表!
如何将数据框导出到表?
这未能返回确实看起来很奇怪。在网上快速浏览了一下,发现了这个 3 分钟的 YouTube 视频,它使用的方法与您正在使用的相同。进一步搜索来源,人们可能会遇到Microsoft 文档,其中给出了出现问题的可能原因。
\n\n\n在 Power BI Desktop 中准备和运行 R 脚本时,存在一些限制:
\n\n
\n- \n
仅导入数据框,因此请确保要导入到 Power BI 的数据在数据框中表示
\n- \n
类型为 Complex 和 Vector 的列不会导入,而是替换为创建的表中的错误值
\n
这些似乎是最明显的原因。打赌您的数据集中没有复杂的列,我相信先验可能是原因。快速重新创建数据集会显示这些scale函数将数据集更改为matrix类对象。这是由 保存的cbind,因此输出是一流的matrix,而不是一流的data.frame。
>dataset <- as.data.frame(abs(matrix(rnorm(1000),ncol=4)))\n>class(dataset)\n[1]"data.frame"\n>library(dplyr)\n>df_normal <- log(dataset + 1) %>%\n> select(c(2:4)) %>%\n> scale \n>class(df_normal)\n[1] "matrix"\n>df_normal <- cbind(dataset[,1], df_normal)\n>output <- df_normal\n>class(output)\n[1] "matrix"\nRun Code Online (Sandbox Code Playgroud)\n一个简单的修复似乎是添加output <- as.data.frame(output),因为这与 powerBI 的文档一致。return也许最后需要一个类似的声明。在脚本末尾添加一行简单说明output应该可以解决此问题。
为了澄清起见,我相信以下编辑的脚本(您的)应该返回预期的数据
\n# \'dataset\' cont\xc3\xa9m os dados de entrada neste script\n\nlibrary(dplyr)\n\ndf_normal <- log(dataset+1) %>%\nselect(c(2:4)) %>%\nscale\ndf_normal <-cbind(dataset[,c(1)], df_normal)\noutput <- as.data.frame(df_normal)\n#output ##This line might be needed without the first comment \nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |