2016-10-21 27 views
3

SPSS/Pythonを使用しようとしています。特定の変数の変数名を変更したいと思います。
例えば、私はNEWNAME = t01XXXPython/SPSS変数名の変更

が、私はこの辺り(下記のような)が見つかりコードでプレイしようとしましたが、やってこれを適切に変更することができませんでしたに変更し

OLDNAME = t1XXXを持つすべての変数が必要私は何が必要です。何かヒントありがとう!


例: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. 
+0

あなたがしようとしている変更は2桁の番号に一貫して数値部分を変換されますか?もしそれがt10xxxなら変更する必要はありませんか? –

+0

フォローアップの質問ありがとうございます。私のデータにはこれとは異なるバリエーションがありますが、これは単なる例です。私の主な問題は、Pythonの正規表現がどのように変数を選択してSPSS構文と対話したいのか分かりませんでした... :-) –

答えて

2

ここでこれを行うためのプログラムです。最初に、tで始まるすべての名前のための変数辞書を作成し、その後に1桁の数字とそれに続く非負文字を続けます。そして、それは変数がここで有数0

に追加するコマンドRENAMEがコードである生成します

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) 
+0

美しく、これは完璧に動作します!ありがとうございました。 「cmd」の部分が何であるかを教えてください。私の無知のために申し訳ありません... –