首页 > 解决方案 > 使用 Python 覆盖 SPSS 变量

问题描述

我的 SPSS 数据集包含两个变量,分别带有名称time1time2标签。最终,我想使用 Python 来读取变量并修改它们。作为一个简单的测试,我试图用. 这是我正在使用的 SPSS 语法:time1time2time1"hello"

begin program python.
import spss, spssdata

data = spssdata.Spssdata(indexes=["time1"], accessType="w")

for row in data:
    data.setvalue("time1", "hello")
    data.CommitCase()

data.CClose()
end program.

但我收到以下错误:

警告:退出程序块时检测到打开的光标。光标已关闭。回溯(最近一次调用):
文件“”,第 5 行,在文件“C:\PROGRA~1\PREDIC~1\PSIMAG~1\5\IBM\SPSS\STATIS~1\25\PYTHON\Lib\site - packages\spssdata\spssdata.py", line 467, in setvalue index = [varspec[0] for varspec in self.newvars].index(var) ValueError: 'time1' is not in list

我在这里想念什么?谢谢你。

我的变量:

我的变量

标签: pythonspss

解决方案


使用模块使用 Python 覆盖数据是不可能的,spssdata因为它使用模块中的Cursor对象spss,它不能覆盖变量。可以使用 Python 创建一个新变量并设置其值。然后,您还可以删除旧变量并将新变量重命名为与旧变量相同的名称。

来自IBM SPSS Statistics 的编程和数据管理 23:IBM SPSS Statistics 和 SAS 用户指南,第 167 页:

写入模式允许您将新变量(及其案例值)添加到活动数据集中


推荐阅读