2016-09-05 25 views
4

spssファイル内のすべてのmy変数のすべての値ラベルを値自体に変更する必要があります。SPSSのすべての値ラベルを数値に変更

私は最初に試しました - バリューラベルALL。 EXECUTE。

これは値ラベルを削除しますが、値も完全に削除します。ファイルを変換しているときに何らかのラベルを付ける必要があります。値が定義されていない場合は、数値を数値に変換します。したがって、すべての値のラベルを数値に変更して、各値のラベルが単なる値 - 値= 1、ラベル= 1である必要があります。

私のすべての変数でこれを行うためのアイデアは何ですか?

ありがとうございます!ここで

+0

可能性がありますが、私はどのような状況でこれはすべて有益であることがわかりません?もしこれが本当にあなたがしたいことがあれば、まず精緻化したいのですか? –

+1

私の.SAVファイルをMDD/DDF形式に変換しています。要素の識別子はフルテキストで名前が出てきていました(少し扱いに​​くい)ので、要素名を1にしたいと思います。 SPSSの値を削除すると、ファイルを変換した後、変数型が数値型に変更されます。だから私はすべての私の変数のための最良の方法は、値のラベルを実際の値に変更することだと思う – PTrem1

+0

あなたが言及したファイル形式(MDD/DDF)についてはあまり知られていませんが、 'VARIABLE 「スケール」から「公称」への「レベル」アサインメントを含む。必要なすべての変数に対して、すべての変数/値の設定値ラベルよりもずっと簡単です。 –

答えて

2

あなたが始めるためのソリューションです:

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(variableType ="numeric") 
for v in vd: 
    allvalues = list(set(item[0] for item in spssdata.Spssdata(v.VariableName, names=False).fetchall())) 
    if allvalues: 
     cmd="value labels " + v.VariableName + "\n".join([" %(i)s '%(i)s'" %locals() for i in allvalues if i <> None]) + "." 
     spss.Submit(cmd) 
spss.Submit("set mprint off.") 
end program. 

あなたがあれば、date変数(または単にそれらの値はまた、ラベルされたことから、日付変数を除外を読んでfetchallの振る舞いを理解するためにthisを読むことをお勧めします彼らは問題を引き起こしませんか?)

関連する問題