簡體   English   中英

SPSS/Python - 訪問變量標簽

[英]SPSS/Python - Accessing variable labels

我正在嘗試使用 Python 在 SPSS 中的 for 循環中訪問變量標簽。 for 循環遍歷一系列變量,刪除 1-3 並重命名 5 個變量序列中的 4 和 5。 這工作正常,但現在當我嘗試通過 SPSS 訪問變量標簽時,我遇到了“unicode object has no attribute keyes”錯誤。

我意識到我需要以某種方式引用數組中的鍵而不是字符串,但作為一名新手程序員,我正在努力弄清楚如何更新我現有的代碼:

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.

任何幫助將不勝感激。

這條線spss.Submit('variable labels %s "%s" [TimeStamp]' % (myvar,varlabel) + ".")是什么給你帶來了麻煩。

[TimeStamp] 位基本上是告訴 python 在字典中查找名為“TimeStamp”的鍵,但在 [TimeStamp] 之前,它找不到正確的數據結構 - 即字典 - 而是一個沒有鍵的字符串。 也許這可能會更清楚:

myDict = {
          "varname": "myVariable", 
          "label": "This is myVariable's label!", 
          "TimeStamp": "20190204-0814"
          }

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

>>> myVariable
>>> 20190204-0814

Python 正在尋找這樣的數據結構,並希望查找關鍵的“TimeStamp”。 現在,我假設您只想讓標簽顯示“分配了 [TimeStamp] 的任何變量標簽”?

只需將兩行更改為

spss.Submit('variable labels %s "%s" + " [TimeStamp]"' % (myvar,varlabel) + ".")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM