我有一个数据库,每个案例都有手写数字的信息,例如:
数字1seq:当以12位数字的顺序画出“1”时
Digit1Ht:数字“1”的高度
Digit1Width:它的宽度
Digit2Seq:数字“2”的信息相同
直到数字“12”
我发现我现在需要的信息组织方式也有点不同。我特别想要一个新的变量,第一个数字的高度和宽度被写入,第二个的高度和宽度等,作为SPSS变量
第一位数
第一位数。。。在
十二指宽
下面是我在SPSS中编写的一个Python程序,它应该是一个非常简单的计算,但是它遇到了一种名称空间问题:
BEGIN PROGRAM PYTHON.
import spss
indices = ["1", "2", "3","4","5", "6", "7", "8", "9", "10", "11", "12"]
seq=0
for i in indices:
spss.Submit("COMPUTE seq = COMDigit" + i + "Seq.")
spss.Submit("EXECUTE.")
spss.Submit("COMPUTE COM" + indices[seq] + "thWidth = COMDigit" + i + "Width.")
spss.Submit("COMPUTE COM" + indices[seq] + "thHgt = COMDigit" + i + "Hgt.")
spss.Submit("EXECUTE.")
END PROGRAM.
很明显这里出了什么问题:第一个COMPUTE
命令中的seq
的值没有返回到Python中,因此在接下来的两个COMPUTE
命令中可以发生正确的事情。Python的值seq
没有改变,所以我最终得到的SPSS代码只给了我两个变量(COM1thWidth
和{COMDigit1Width
,COMDigit2Width
等被写入其中。在
有没有办法让Python每次都访问SPSS的值seq
,这样字符串连接将创建正确的COMPUTE
?或者我只是想错了?在
已经在谷歌上广泛搜索,但找不到办法。在
由于我刚开始在SPSS中使用Python(而不是使用SPSS的wiz那么多),可能有一种更简单的方法来实现这一点。在
欢迎所有建议。在
有很多方法可以通过Python处理Statistics保存的案例数据,但是必须使用spss光标, spssdata.spssdata,或spss.数据集班级。它不在Python名称空间中。在
在这种情况下,最简单的方法就是将seq的公式替换到后面的引用中。有很多其他方法可以解决这个问题。在
另外,去掉那些EXECUTE调用。它们只是强制不必要的数据传递。统计将根据命令流在需要时自动传递数据。在
将SPSS变量数据转换为Python变量进行操作的最简单方法可能是使用spss.数据集班级。在
为此,您需要: 1.)您的SPSS数据集的数据集名称 2.)要从中提取数据的变量的名称或其在数据集中的索引。在
如果要从中提取数据的变量名命名为“seq”(我相信是在您的问题中),那么您可以使用类似于:
嗨,我刚刚偶然发现了这个,你可能已经离开了,但它可能会帮助其他人。我不认为你需要访问Python访问SPSS值。我想这样的方法可能会奏效:
但我必须查看数据以确保我正确理解您的问题。另外,打印的东西让代码看起来很难看,但这是我唯一能控制引擎盖下发生的事情的方法。再见!在
相关问题 更多 >
编程相关推荐