2015-03-31 319 views
1

我有一個變量標籤的列表,我想將它們大寫spss:重命名變量標籤

(即)變量標籤。

L0K3V  "PROBLÈME AVEC VOS ENFANTS" 
PK34  "QUEL ÂGE AVIEZ-VOUS?" 
ML9KL  "RÉPONDANT A-T'IL DÉJA ÉTÉ LÉGALEMENT MARIÉ(E)" 
... 

程序

BEGIN PROGRAM PYTHON. 
import spss 

spss.StartDataStep() 
#current dataset 
datasetObj = spss.Dataset() 

varcount=spss.GetVariableCount() 
#populate a list or all the Variable Label 
varNameList= [spss.GetVariableLabel(i) for i in xrange(varcount) ] 
labellist=[] 
for i in xrange(varcount): 
    myLabel = spss.GetVariableLabel(i) 
    newLabel = myLabel.capitalize() 
    spss.Submit(r""" rename labels (%s = %s) . """ %(myLabel, newLabel)) 

spss.EndDataStep() 
END PROGRAM. 



Traceback (most recent call last): 
    File "<string>", line 22, in <module> 
    File "C:\PROGRA~1\IBM\SPSS\STATIS~1\22\Python\Lib\site-packages\spss\spss.py", line 1527, in Submit 
    raise SpssError,error 
spss.errMsg.SpssError: [errLevel 98] Submit cannot be used from within a Datastep. 

回答

2

1)您有一個錯誤提示提交不能從一個數據集內使用。

2)VARIABLE LABEL是重新標記變量的正確命令。

這裏是達到相同的簡化方式:

get file="C:\Program Files\IBM\SPSS\Statistics\23\Samples\English\Employee data.sav". 
begin program. 
import spss, spssaux, spssdata 
spss.Submit("set mprint on.") 
vd=spssaux.VariableDict() 
spss.Submit("VARIABLE LABEL %s." % ("\n".join(["%s '%s' " % (str(v), v.VariableLabel.capitalize()) for v in vd]))) 
spss.Submit("set mprint off.") 
end program. 
2

您還可以設置變量標籤屬性(v.VariableLabel =「...」),而不是生成的變量標記命令。如果你想要的是Title Case,你可以做v.VariableLabel = v.VariableLabel.title()