首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SPSS/Python -访问变量标签

SPSS/Python -访问变量标签
EN

Stack Overflow用户
提问于 2019-02-01 11:16:52
回答 1查看 449关注 0票数 1

我正在尝试使用Python访问SPSS中for循环中的变量标签。for循环遍历一系列变量,删除1-3并重命名5个变量序列中的4和5。这工作得很好,但现在当我试图通过SPSS访问变量标签时,我遇到了'unicode object has no attribute keyes‘错误。

我意识到我需要以某种方式引用我的数组中的键而不是字符串,但作为一个新手程序员,我正在努力找出如何更新我现有的代码:

代码语言:javascript
复制
begin program.
import spss, spssaux
vdict=spssaux.VariableDict()
mylist=vdict.range(start="M10", end="ENDOK_D")
nvars = len(mylist)
mycounter = 1
durations = ""

for i in range(nvars):
  myvar = mylist[i]
  if (mycounter < 4): 
    spss.Submit("delete variables %s." % myvar)
    mycounter +=1
  elif (mycounter == 4): 
    varlabel = mylist[i].VariableLabel 
    spss.Submit('variable labels %s "%s" [TimeStamp]' % (myvar,varlabel) + ".")
    if (myvar.endswith("_C")): mynewvar = myvar[:-2] + "_TS"
    spss.Submit("rename variables (%s = %s)" % (myvar,mynewvar) + ".")
    spss.Submit("formats %s (DATETIME28.4)" % (mynewvar) + ".")
    mycounter +=1
  elif (mycounter == 5): 
    varlabel = mylist[i].VariableLabel 
    spss.Submit('variable labels %s "%s" [TimeStamp]' % (myvar,varlabel) + ".")
    if (myvar.endswith("_D")): mynewvar = myvar[:-2] + "_TSD"
    spss.Submit("rename variables (%s = %s)" % (myvar,mynewvar) + ".")
    durations += mynewvar + " "
    mycounter = 1
spss.Submit("alter type %s (F4.0)" % durations + ".")
end program.

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2019-02-04 15:37:56

spss.Submit('variable labels %s "%s" [TimeStamp]' % (myvar,varlabel) + ".")这一行是给您带来麻烦的原因。

TimeStamp位基本上是告诉python在字典中查找名为" TimeStamp“的关键字,但在TimeStamp之前,它找不到正确的数据结构-即字典-而是没有关键字的字符串。也许这会让事情变得更清楚:

代码语言:javascript
复制
myDict = {
          "varname": "myVariable", 
          "label": "This is myVariable's label!", 
          "TimeStamp": "20190204-0814"
          }

print (myDict["varname"])
print (myDict["TimeStamp"])

>>> myVariable
>>> 20190204-0814

Python正在寻找这样的数据结构,并希望查找关键字"TimeStamp“。现在,我假设您只是希望您的标签显示为“was Label I TimeStamp"?

只需将这两行更改为

代码语言:javascript
复制
spss.Submit('variable labels %s "%s" + " [TimeStamp]"' % (myvar,varlabel) + ".")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54472386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档