【问题标题】:Python/SPSS rename variable namesPython/SPSS 重命名变量名
【发布时间】:2016-10-21 23:16:39
【问题描述】:

尝试使用 SPSS/Python 我想更改某些变量的变量名称。
例如,我需要带有

的所有变量

oldname = t1XXX 更改为 newname = t01XXX

尝试使用我在此处找到的代码(如下所示),但无法正确更改此代码以执行我需要的操作。感谢您的任何提示!


Jignesh Sutar 的例子;从所有变量名称中剥离后缀在 spss/34816192#34816192)

begin program.
spss.Submit(r"set mprint on.")
import spss, spssaux
allvarlist=[str(v) for v in spssaux.VariableDict()]
filteredvarlist=[v for v in allvarlist if v.endswith("_1")]
spss.Submit( "rename variables (\n" \
     + "\n".join(filteredvarlist) \
     + "\n=\n" \
     + "\n".join([v[:-2] for v in filteredvarlist]) \
     + ").")
spss.Submit(r"set mprint off.")
end program.

【问题讨论】:

  • 您尝试做的更改是将数字部分始终转换为两位数吗?即如果它是 t10xxx 则无需进行任何更改?
  • 感谢您的跟进问题;我的数据中有不同的变体,这只是一个例子。我认为我的主要问题是我不知道 Python 正则表达式如何选择我想要与 SPSS 语法交互的变量... :-)

标签: python spss


【解决方案1】:

这是一个执行此操作的程序。它首先为所有以 t 开头的名称创建一个变量字典,后跟一个数字,后跟一个非数字。然后它会生成一个 RENAME VARIABLES 命令添加前导 0。

代码如下:

import spss, spssaux  

vardict = spssaux.VariableDict(pattern="t\d\D")  
newnames = [v[0] + "0" + v[1:] for v in vardict.variables]  
cmd = """rename variables (%s=%s)""" % \  
(" ".join(vardict.variables), " ".join(newnames))  
spss.Submit(cmd)  

【讨论】:

  • 漂亮,完美!谢谢你。你能告诉我'cmd'部分是什么吗?对不起我的无知...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多