SPSS syntax体验:设置虚拟变量与Formats

笔者在最近的一项研究中需要反复设置超过30个虚拟变量,理论上用Excel并不难,写好一次if套用数据即可。但数据量多达6万  项,excel处理起来分分钟都可能崩溃。SPSS中虽然的确有内置的Create Dummy Variables功能,但这个功能颇为令人费解(  如果有人知道到底该如何使用请务必指教一下!),于是决定自己试试syntax(SPSS 24.0)。

=======================================

1. SPSS Syntax初体验

SPSS的语法系统还是很容易学的,主要是因为所有“点鼠标”的操作几乎都可以通过paste功能显示源代码,这样我们就能快速上手或者直接进行必要的修改。

SPSS syntax体验:设置虚拟变量与Formats

图1:用了这么久SPSS,终于知道这个paste是干嘛的了

SPSS syntax体验:设置虚拟变量与Formats

图2:自动粘贴到Syntax中的代码。红圈中的DataSet1是表示这个syntax是对哪个dataset运行,这里不会显示保存的dataset的名字,所以建议用syntax时只打开需要操作的dataset,以防syntax执行到别的dataset中去了。

2. 建立虚拟变量,设置格式并检查结果

我这回要做的是设置大量的虚拟变量,可以用if compute写,也可以recode,但这样往往需要设置两次数值。有一个简单点的写法:COMPUTE Dummy = (Condition Variable = "Dummy Name"),这样就可以直接创建出包括1和0的虚拟变量了。对了,SPSS每一行代码都以“.”结束

这次遇到的最大的障碍就是SPSS对Run的设置跟许多语言不一样,如果你直接点那个大大的绿色"Run”按钮,SPSS只会Run光标所在的那一行(我这个例子中就是只Run第14行),这真是令人醉醉的......我们需要点开菜单中的Run,选All,才能将所有的代码跑一遍。

SPSS syntax体验:设置虚拟变量与Formats

图3:这个设置真是别具一格......

下面又是一个SPSS“与众不同”的地方。当我们点了Run以后,会发现新的虚拟变量已经创建好了,但是数值却没有显示!这是因为SPSS怕大家在数据计算时一步错,步步错,贴心的帮我们把计算暂停了(注意右下的Transformations pending),这里需要点Run Pending Transforms时才能继续计算,显示数据。更简单的解决方法是在代码的结尾写一个EXECUTE,这样SPSS就会一次性跑完全部代码了。(什么,为什么写了EXECUTE还不行?因为你点了绿色的只Run一行功能......别忘了点开Run菜单选All)

SPSS syntax体验:设置虚拟变量与Formats

图4:最后一个大坑了!

然后我们要让控制虚拟变量的格式,我们想要只显示一位数字,这里要用FORMATS函数后面接需要控制变量的名称与(FA.B),A表示这个变量的宽度,B表示小数点后显示几位,我们这里设置(F2.0)就是宽度是2,小数点后不显示(作为虚拟变量,宽度是1也够;以及注意括号的位置,把F包在里面)。

SPSS中,变量间以空格区分,理论来说,可以一个FORMATS后面接N个变量,每个都有自己的(FA.B)参数或者统一一个参数,但不知道是版本的问题还是怎样,笔者所用的SPSS并不支持这个功能,于是只好弄出N行FORMATS来。图中的信息栏虽然报错了,但实在是意义不明,而且函数也正常运行了,我们也就不理它了。

设置完虚拟变量后最好检查一下结果,这里用频率统计FREQUENCIES。这个函数支持用空格分隔变量。但是这个函数中所有变量都必须存在(笔者需要设置的虚拟变量中有两个不存在于当前这组数据),否则会整个函数无法运行(FORMATS中如果遇到了不存在的变量只会那一行报错)。因此将不需要的变量或者函数分离出来,用“*”号注释掉就OK了。

SPSS syntax体验:设置虚拟变量与Formats

图5:终于完整的跑下来了!我的第一个SPSS Syntax(注意最后一个EXECUTE)

=====================================

总得来说,SPSS的Syntax除了个别反常的设置以外,学习起来感觉还是很容易上手的,祝大家科研愉快!