【问题标题】:pass value from R (run in SPSS) to open SPSS dataset从 R 传递值(在 SPSS 中运行)以打开 SPSS 数据集
【发布时间】:2012-06-06 07:09:22
【问题描述】:

这里对 R 来说是全新的。我在 SPSS 中运行 R 来解决 SPSS 数据集中的一些复杂多项式。我设法将 R 的结果返回到 SPSS,但这是一个非常不优雅的过程:

begin program R.
z  <- polyroot(unlist(spssdata.GetDataFromSPSS(variables=c("qE","qD","qC","qB","qA"),cases=1),use.names=FALSE))
otherVals <- spssdata.GetDataFromSPSS(variables=c("b0","b1","Lc","tInv","sR","c0","c1","N2","xBar","DVxSq"),cases=1)
b0<-unlist(otherVals["b0"],use.names=FALSE)
b1<-unlist(otherVals["b1"],use.names=FALSE)
Lc<-unlist(otherVals["Lc"],use.names=FALSE)
tInv<-unlist(otherVals["tInv"],use.names=FALSE)
sR<-unlist(otherVals["sR"],use.names=FALSE)
c0<-unlist(otherVals["c0"],use.names=FALSE)
c1<-unlist(otherVals["c1"],use.names=FALSE)
N2<-unlist(otherVals["N2"],use.names=FALSE)
xBar<-unlist(otherVals["xBar"],use.names=FALSE)
DVxSq<-unlist(otherVals["DVxSq"],use.names=FALSE)
z2 <- Re(z[abs(c(abs(b0+b1*Re(z)-tInv*sR*sqrt(1/(c0+c1*Re(z))^2+1/N2+(Re(z)-xBar)^2/DVxSq))-Lc))==min(abs(c(abs(b0+b1*Re(z)-tInv*sR*sqrt(1/(c0+c1*Re(z))^2+1/N2+(Re(z)-xBar)^2/DVxSq))-Lc)))])
varSpec1 <- c("Xd","Xd",0,"F8","scale")
dict <- spssdictionary.CreateSPSSDictionary(varSpec1)
spssdictionary.SetDictionaryToSPSS("results", dict)
new = data.frame(z2)
spssdata.SetDataToSPSS("results", new)
spssdictionary.EndDataStep( )
end program.

老实说,它主要是从一些相关的示例拼凑而成,看起来比应有的复杂。我必须使用 R 创建的新数据集并使用我的原始数据集运行 MATCH FILES。我想做的就是a)将数字从SPSS拉到R中,b)操纵它们——在这种情况下,找到一个符合某些标准的多根——,c)将结果直接放回SPSS数据集中,而不会弄乱任何一个以前的数据。

我是否遗漏了一些能让事情变得更简单的东西?请记住,在此尝试之外,我的 R 经验为零,但我在 SPSS 和 matlab 编程方面有不错的经验。

提前感谢您提供的任何帮助!

【问题讨论】:

    标签: r spss


    【解决方案1】:

    SPSS 中的 R 可以创建新的 SPSS 数据集,但不能修改现有数据集。在很多情况下,来自 R 的数据在维度上与活动的 SPSS 数据集不一致。因此,您需要使用上面的 api 创建字典和数据框,然后在需要匹配时在 SPSS 端执行任何适当的操作。您可能希望通过建议@us.ibm.com 提交 SPSS 增强请求

    【讨论】:

    • 哦,所以我所做的是唯一的方法。感谢您的提示-我只能猜测我可以浪费多少时间来寻找解决方案。后续问题:您可以在 R 中构建一串 SPSS 语法并将其发送到 SPSS 语法窗口吗?那将是一个很好的解决方法:只需生成一个 COMPUTE 命令并在 SPSS 中执行它。我知道我可以在 R 中创建一个 .sps 文件,然后将其发送到 SPSS 中运行,但我个人偏向于将临时文件写入 HD,因为我在具有不同文件结构和写入权限的各种联网 PC 上工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多