SPEN问题与RENAME VARIABLES

时间:2016-12-06 20:06:37

标签: unicode syntax spss

完全披露 - 我没有编程经验。

我有一个很长的语法(1800行),这一部分给了我麻烦。我不能为我的生活弄清楚我做错了什么。

应该使用现有文件LastAwardingFile并将其缩小到/ KEEP语句中列出的变量。然后将每个变量重命名为类似的变量名,但是“oldxxxx”。稍后我的语法将新文件与此更新的变量文件匹配,并指出值中的任何更改,并在重新编码的文件中提供原因列表。

一旦语法到达第一个RENAME VARIABLES,我就会收到以下错误:

RENAME VARIABLES来自RENAME的重复变量名称。

如果我使用/ KEEP,有什么重复变量吗?如何将变量(例如“comb”)中的值取出并将它们放入一个新变量“oldcomb”中,以便我可以将本周的“梳子”与“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

2 个答案:

答案 0 :(得分: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 :(得分:1)

有关RENAME VARIABLES命令的注意事项 - 它的工作方式如下:

RENAME VARIABLES (list_of_starting_variable_names = list_of_final_variable_names).

你只需要提供2个名字列表,重命名将在提供名称的顺序中完成(列表1中的第一个变量被重命名为列表2中的第一个变量,... n-将列表1中的变量放入列表2中的第n个变量......依此类推。

这应避免您收到Duplicate Variable Names错误,因为所有重命名都是一次性完成的。但是需要你稍微改变一下原始语法,并且有点难以发现哪个变量被重命名为哪个变量。