簡體   English   中英

從SPSS中的所有變量名稱中刪除后綴

[英]Strip suffix from all variable names in SPSS

我有一個數據集,其中每個變量名都有后綴“_1”(這是為了表示第一個訪談時間點)。 我想從所有變量中刪除這個后綴,但是有數百個這樣的后綴,所以我正在尋找一種不使用RENAME語句數百次的方法。

最接近我發現的相關信息來自下面的鏈接,“一些用於動態重命名變量的SPSS循環。” 但是,這些示例顯示如何添加后綴或更改前綴,但不刪除后綴。

http://www.ats.ucla.edu/stat/spss/code/renaming_variables_dynamically.htm

我在SPSS中安裝了Python essentials包,但我不熟悉Python。

這是Jignesh的Python程序稍微緊湊的版本。 它在功能上是一樣的。

begin program.  
import spss, spssaux  
filteredvarlist=[v.VariableName for v in spssaux.VariableDict(pattern="^.*_1$")]  
spss.Submit( "rename variables (%s=%s)." %  
    ("\n".join(filteredvarlist), "\n".join([v[:-2] for v in filteredvarlist]))  
)  
end program.

我對SPSS一無所知。 快速搜索找到一個使用python“使用Python重命名變量”的例子( http://www.ats.ucla.edu/stat/spss/faq/renaming_vars_Python.htm

只需稍加改動即可適合您的情況:

begin program.
import spss, spssaux
spssaux.OpenDataFile('d:\data\elemapi2.sav')
vdict=spssaux.VariableDict()
mylist=vdict.range(start="grad_sch", end="enroll")
nvars = len(mylist)

for i in range(nvars):
    myvar = mylist[i]
    mynewvar = myvar.strip("_1")
    spss.Submit(r"""
        rename variables ( %s = %s) .
                        """ %(myvar, mynewvar))
end program.

盡管UCLA網站上給出的解決方案適用於該特定示例/數據集,但是如何對python程序進行編碼,它可能無法在所有情況下按預期工作。

例如, "V01_1".strip("_1")"V0"會導致錯誤,而"V_1_1".strip("_1")會導致簡單的"V" ,如果想要,則會再次錯誤且不符合要求剝去后綴。

並且要超級關鍵,即使變量沒有"_1"后綴,它也會生成冗余的RENAME VARIABLES命令(雖然我知道在你的特定例子中你說所有變量都應該)。

此外,它為每個變量生成單獨的單獨RENAME VARIABLE命令,不確定它是否比生成單個RENAME VARIABLES命令具有速度性能劣勢? 盡管如此,如果您需要以這樣的方式編寫代碼,我可能會演示一種不同的編碼方式:

DATA LIST FREE / ID V01_1 V02_1 V03_1 W_1_1 W_2_1 W_3_1.
BEGIN DATA
0 11 12 13 21 22 23
END DATA.

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.

暫無
暫無

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

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