斯潘8
斯潘4
简介:开始使用RCallerγ下一步:RCaller:树高和树宽是否相关?
如果需要执行比统计计算器变压器,theRCaller transformer使更高级的统计分析在FME中成为可能。RCaller使您能够在FME中运行R脚本。
带有groups.fmwt的rcallerlinearegressionwithgroups.fmwt
在使用RCaller之前,您需要安装适当的R包。请参见安装R解释器在FME用户文档中。
在你和卡勒一起走之前,有一些有用的事情要记住:
当您将变压器或功能类型连接到连接输入端口时,FME会向RCaller添加新端口。新的输入端口将从源对象继承其名称(即转换器名称或功能类型名称)。
端口名用作r中的数据帧名,因此,将端口名重命名为可以在R脚本中使用的名称。
FME将您的数据加载到一个临时的sqlite数据库中,因此,无论是性能还是清晰度,只选择要在R脚本中使用的属性。确保数据类型正确。
FME将数据作为R传输到R中。data frame.通过从“数据帧”菜单中拖动项,可以访问R脚本中的数据帧或数据帧列:
So to access the vector of Estimated values drag the Data - Estimated item into the script window and you'll see Data$Estimated in your R script window.
这不是R教程。要进一步了解R,please see the resources section at the end of this article.If you're new to R,我建议您使用R控制台来开发和调试您的脚本——您将获得更好的反馈,并且可以更容易地看到中间结果。然后复制脚本并将其粘贴到RCaller中。在R控制台中逐步构建您的脚本,这样就可以清楚地知道出现了什么问题。您可以使用R读卡器也就是说:
data=read.csv(“d:/tmp/sampledata.csv”)。
γ注释R uses UNIX paths,即'//www.baooytra.com/knowledge/'不是'\'。
…可能很棘手!RCaller passes data back to FME via a data frame called 'fmeOutput'.数据帧中的每一行将成为FME中的单独输出功能。如果您知道如何构建和附加到R数据帧,您可能会跳过这一部分。
To populate fmeOutput data frame,您只需返回一个值列表(长度为1的向量)。例如:
>data=read.csv(“d:/tmp/sampledata.csv”)>meancact=平均值(数据$actual)>meanest=平均值(数据$estimated)>fmeoutput=数据.frame(平均值,平均值)
但许多r函数返回更复杂的结果。例如,线性回归函数求解y=mx+k:
lm.linear<-lm(数据$actual~数据$estimated)
Use the R摘要()function to see the results:
> summary(lm.linear)Call: lm(formula = Data$Actual ~ Data$Estimated) Residuals: Min 1Q Median 3Q Max -9.9667 -2.1022 0.2679 2.3813 8.3354 Coefficients: Estimate Std.误差t值pr(>t)(截距)12.051001 9.149612 1.317 0.211数据$Estimated-0.009291 0.861531-0.011 0.992剩余标准误差:13自由度5.045多重r平方:8.946e-06,调整后的r平方:1和13 df上的-0.07691 f统计量:0.0001163,P值:0.9916
如何将其恢复到FME中?
这个姓名()函数将返回摘要中的变量名,例如:
>名称(summary(lm.linear))[1]“call”“terms”“residuals”“coefficients”“aliased”[6]“sigma”“df”“r.squared”“adj.r.squared”“fstatistic”[11]“cov.unscaled”
But...其中有些是更复杂的物体,就像“系数”一样:
>汇总(lm.linear)$系数估计标准Error t value Pr(>|t|)(Intercept) 12.051001492 9.1496116 1.31710525 0.2105480Data$Estimated -0.009291111 0.8615308 -0.01078442 0.9915592
So what to do if you want to return to FME the common characteristics of the y=mx+k analysis such as the r squared value,M & K?
您必须挑选出您需要的值,并将它们传递给FMEOUT数据框。在上面的例子中,M由数据给出$Estimated Estimate=-0.009291111,K(y Intercept)由(Intercept)Estimate=12.051001492给出,R平方结果为简单值:R平方。So you can use:
K<-摘要(lm.linear)$系数[1,1](第一行第一列)M<-摘要(lm.linear)$系数[2,1](第一行第二列)R2<-摘要(lm.linear)$R.squared
That was easy!
工作区RCallerlinearegression.fmwt说明了上面描述的示例。
最后一个提示:在RCaller中公开结果变量,以使工作台中的生活更轻松:
在某些情况下,可能不适合为R结果使用数据帧,例如,对于大型光栅或图像。在这种情况下,您可以将R结果导出到临时数据文件,并让FME重新读取这些结果。文章RCaller:通过克里格插值点到光栅说明如何做到这一点。
对于许多统计问题,你有一个定性的价值,即代码abc abd txu,这与定量值有一定关系。So simple grouping makes a lot of sense.
例如,您可能需要计算每个代码值的平均值:
日期代码估计日期:2016年11月29日xu46.1459.511/28/2016abd43.8934.111/27/2016xu42.1525.811/27/2016abc9.320.311/26/2016abd42.1550.611/25/2016abc11.0411.7
你可以把你的分析放在一个循环中,用代码对数据进行采样,然后计算回归。比如:
对于(unique中的currentcode(data$code))假设输入数据。帧是'data'tmpdata=data[数据$code==currentcode,]lm=lm(tmpdata$actual~tmpdata$estimated)y=mx+k上的线性模型
#初始化向量以保存结果r2<-c()m<-c()k<-c()code<-character()y=实际x=估计值(currentcode in unique(data$code))tmpdata=data[data$code==currentcode,]linear regression for y=mx+k lm.linear=lm(tmpdata$actual~tmpdata$estimated)linear model result vectors y=mx+k r2=c(r2,汇总(lm.linear)$r.squared)k=c(k,总结(lm.线性)$系数[1,1])m=c(m,汇总(lm.线性)$系数[2,1])代码=C(代码,当前代码)fmeoutput<-data.frame(代码,MKR2)
您可以将结果直接分配给更高效的数据帧,如果你能弄明白的话。
工作区带有groups.fmwt的rcallerlinearegressionwithgroups.fmwt说明了上面描述的示例。
调试R脚本
如果你对R比较陌生,然后我建议您首先在R控制台中开发脚本,然后转移到RCaller。在那里调试要容易得多,请参见上面构建R脚本一节。如果遇到RCaller错误:
错误RCaller(inlinequeryfactory):执行R脚本时,inlinequeryfactory失败,退出代码为1。输出为:加载所需包:gsubfn加载所需包:proto加载所需包:rsqlite
This seems to be a common error response if there is a syntax error in your script,或未定义的变量引用,因此,请仔细检查脚本中是否有未分配的变量或拼写错误。
记得,就像FME一样,R区分大小写。
以下是有关在FME中使用R的一些有用资源:
故障模式及后果分析文档
“R”教程:http://www.r-tutor.com/和在这里
使用summary()提取“summary”信息:example here
附加到数据帧示例
知识中心调解员文章:
?2019安全亚搏在线软件公司|合法的