2016-12-06 63 views
2

完全披露 - 我沒有編程經驗。SPSS問題與RENAME VARIABLES

我有一個很長的語法(1800行),這一部分一直給我帶來麻煩。我不能爲我的生活弄清楚我做錯了什麼。

它應該採取一個現有的文件LastAwardingFile並將其縮小到只是在/ KEEP語句中列出的變量。然後每個變量都被重新命名爲一個類似的變量名稱,但是「oldxxxx」。稍後,我的語法將新文件與此更新的變量文件相匹配,並指出值中的任何更改,並給出了重新編碼文件中的原因列表。

一旦語法達到首先重命名變量,我得到以下錯誤:

RENAME變量重複從重命名變量名。

如果我使用/ KEEP,有什麼重複的變量嗎?我怎樣才能把變量中的值(如「comb」)放入一個新的變量「oldcomb」中,然後我可以將本週的「comb」與「oldcomb」進行比較?

預先感謝您!

採用SPSS 22

GET 
    FILE='LastAwardingFile.sav'. 
DATASET NAME LastAwardingFile WINDOW=FRONT. 

alter type Student_ID (A7). 

SAVE OUTFILE='LastAwardingFile.sav' 
    /COMPRESSED 
    /KEEP= Student_ID rl_highschoolgpa comb need qualitygrp NewUpfrontGrant meritgrant 
targetcounty_housing housinggrant tuitiongrant athlete_recruit bo_FAFSA_Filer maleincentivegrant_newupfront bo_nsex 
nursing bio computerscience psyc minor criminalJustice education Business bo_nstate resident 
femaleincentivegrant_newupfront total_EMFASYS_award. 

DATASET NAME LastAwardingFile WINDOW=FRONT. 

RENAME VARIABLES (total_EMFASYS_award=oldgrant). 
RENAME VARIABLES (targetcounty_housing = oldtargetcounty_housing). 
RENAME VARIABLES (nursing = oldnursing). 
RENAME VARIABLES (femaleincentivegrant_newupfront = oldfemaleincentivegrant_newupfront). 
RENAME VARIABLES (resident = oldresident). 
RENAME VARIABLES (housinggrant = oldhousinggrant). 
RENAME VARIABLES (bio = oldbio). 
...etc 
+1

SAVE命令不會更改活動數據集,它只會從它創建的新sav文件中刪除一些變量。如果你運行的東西類似於'ADD FILES FILE = */KEEP [VARS HERE] .',把相同的變量放在'KEEP'子命令中,然後'EXECUTE.'你活動的數據集應該和保存的文件具有相同的變量。 –

+0

可以使用DELETE VARIABLES命令使語法更清晰,DELETE VARIABLES命令在活動文件上運行。 – JKP

+0

我建議你使用'GET FILE ='LastAwardingFile.sav(或newfilename。sav)'。 DATASET NAME LastAwardingFile WINDOW = FRONT.'再次在第一個'RENAME VARIABLES ...'之前,但是如果使用舊文件名,這應該覆蓋。 – rawatdeepesh

回答

1

首先一對夫婦的言論:這將是更好的做法是保存到不同的文件名。在你的語法中,原始文件被保存下來,你不能回去......另外,我建議你遵循@Andy W關於如何只保留文件中需要的變量的建議。

現在,在您發佈的語法示例我看到一個錯誤 - 可能這是你的問題:

RENAME VARIABLES (total_EMFASYS_award=oldgrant).

新的名稱,而不是oldgrantoldtotal_EMFASYS_award。可能進一步下跌,你還是再命令說

RENAME VARIABLES (grant=oldgrant). 

因此雙名。通過陳述宏名和變量的完整列表

define renVars (!pos=!cmdend) 
rename variables 
!do !i !in (!1) !i = !concat("old",!i) 
!doend . 
!enddefine. 

運行此宏定義後,您可以運行宏:

爲了避免這樣的錯誤,並縮短你的語法,你可以使用下面的宏你想要重命名的,像這樣:

renVars 
Student_ID rl_highschoolgpa comb need qualitygrp NewUpfrontGrant meritgrant 
targetcounty_housing housinggrant tuitiongrant athlete_recruit . 
1

有一點需要注意RENAME VARIABLES命令 - 它也可以是這樣的:

RENAME VARIABLES (list_of_starting_variable_names = list_of_final_variable_names). 

您只需要提供2個名稱列表,重命名將在提供名稱的命令中完成(列表1中的第1個變量被重命名爲列表2中的第1個變量,...列表1中的第n個變量到列表2中的第n個變量...等等。

這應該可以避免出現Duplicate Variable Names錯誤,因爲所有重命名都是一次完成的。但是會要求你稍微改變一下原來的語法,並且有點難以發現哪個變量被重命名爲哪個變量。