中国心理学家网
 
热线咨询 0551—2826223
当前位置: 网站首页 - 心理统计 - SPSS学习教程
    发表日期:2006年8月12日 编辑:cnpsy 有12101位读者读过此文 【字体:
2.2.1.2 从原有变量计算新变量

2.2.1.2 从原有变量计算新变量

从头定义变量的情况多数在建立数据集时出现。但是,当数据集已经建立,需要整理、转换变量时,碰到的更多情况是需要根据某种条件从原有变量计算新变量。下面我们将按菜单条目的顺序依次讲解他们的功能。但是,首先我们需要了解一下所用的对话框界面的情况。

SPSS对话框元素介绍

下面是我们在第一章曾经见过的两样本t检验对话框:

这是一个非常典型的SPSS对话框。它包含了许多具有SPSS特色的对话框元素:

  • 对话框左侧为候选变量列表框,里面列出了可被该对话框使用的变量;

  • 右上方为Test Variables框,可将变量选入其中;注意在两个框的中间用“”相连,这是变量移动按钮,其方向表明是将变量从那个框移动到哪个框,上图中我们选中了变量group,两个移动按钮均变黑并向右指,表明变量group可以移动到他们右侧的两个框里去,改变当前框(在其他两个框里单击),移动按钮就会转向、变灰等以表明不同的意思(墙头草一个,可别小看这个功能,我想用VB实现这个功能,也是费了些工夫才把它搞定了);

  • 右侧为一排五个按钮,分别是确定、粘贴、重置、取消和帮助。这五个兄弟也是几乎永远一起出现的,另外四个大家都比较熟悉了,重置(Reset)按钮用于取消对话框内已做的选择,恢复到默认的状态;

  • 最下方有个Options按钮,用于设置专门用于该对话框的选项;

  • OK、Paste两个按钮为灰色,表明所需条件尚未满足,该按钮暂不可用。同理,Grouping Variable框下方的Define Groups按钮为灰色显示,也表明暂不可用。

Compute Variable对话框

例3.2  在li1_1.sav中建立新变量temp,令其值当血磷值大于1时为2,否则为1。

解:这里需要用到Compute Variable对话框,外加一点技巧。首先给变量temp均赋值为1,然后将血磷值大于1的记录其temp变量值改为2即可。选择菜单Transform==>Compute,弹出Compute Variable对话框如下:

左上角为需要计算的变量名,在其中键入“temp”,此时“Type&Lable”按钮就会变黑,喜欢精确的朋友可以在这里对temp进行详细的定义,但如果你和我一样非常懒,就可以对它视而不见(不要生气,聪明人大多都非常懒:));左下方为候选变量列表,现在还用不着;中部为类似计算器的软键盘,可以用鼠标按键输入数字和符号,这里我们直接输入“1”,输入的内容回立刻在右上方的数值表达式窗口中出现;软键盘右侧为函数窗口,可以在这里找到并使用所需的SPSS函数;这次也用不到。好,现在“OK”按钮已经变黑,单击他,系统就会自动生成一个新变量temp,并且取值均为1。

软键盘上几个奇奇怪怪的符号的含义如下:

~= & | ** ~
不等号,等价于<> 逻辑符号AND 逻辑符号OR 乘方,相当于函数EXP() 逻辑符号NOT

在函数窗口中选中某个函数并单击右键,系统就会弹出该函数的用法说明。

函数主要是和变量名组合起来使用的,比如说ABS(x)就是取变量x的绝对值。

好,现在开始进行第二步,再次选择菜单Transform==>Compute,系统也再次弹出这个对话框--等等!注意到了吗?该对话框自动记住了你上次输入的内容,几乎所有SPSS的对话框都有这个特性,这会大大方便我们的使用。好,将数值表达式窗口中的1改为2,然后单击中下部的“If”按钮,系统弹出记录选择对话框如下:

不需要太多解释,大部分内容都是前面见过的。由于我们这里不是对所有记录做变换,因此选中第二个单选钮“Include if case statisfies confition:”,此时下方的所有窗口变亮,表明现在可用;而“Continue”按钮变灰,表明当前还没有提供所需的信息,好,我们就来提供,在左侧选中血磷值(x),然后单击“”,x就被引入了右侧的变量框,任你用键盘或者用鼠标,总之将下面这个算式补充完:x>1。现在可见“Continue”按钮再度变黑。在它又变灰之前赶快单击它(开个玩笑),系统回到Compute Variable对话框,请注意If按钮右侧的变化:x>2。如果你做的结果不一样,请重来一遍。

现在单击“OK”按钮,由于我们要替换变量值,系统会弹出一个确认对话框,确认替换,马上你就会看到,我们已经把这道题做完了。

Count对话框

Count对话框用于计算某个值或某些值在某个变量的取值中是否出现(好象有点拗口),比如我们想看看有哪些记录的血磷值在2~3之间,选择菜单Transform==>Count,系统弹出Count对话框如下:

Target Variable框中用于指定记录变量值是否出现的变量名,在这里输入temp2;选中血磷值(x),将其选入Variables窗口,此时“Define Values”按钮变黑,单击它,系统弹出变量值定义窗口如下:

左半部为变量值定义窗口,可以定义某个值、系统缺失值、系统或用户定义缺失值、变量值范围、小于某值或大于某值。我们这里是第四种情况:选择Range,在through两侧分别键入2、3,然后单击已变黑的“Add”按钮,“2 thru 3”就会被加入“Values to Count”框内。然后单击“Continue”,再单击Count对话框的“OK”,可以看到系统自动生成变量temp2,其中10、11号记录因血磷值介于2和3之间,temp2取值为1,其余的记录temp2取值均为0。

SOS,SOS,请大家千万注意,Count对话框有一个潜在的bugs,当你需要计算同时满足两个变量取值条件的记录数有多少时,直接用该对话框会得出完全错误的结果。这里有一点技巧,需要对对话框生成的指令加以修改,至于怎么修改嘛,我们将在Syntax(语法)窗口使用详解一章中讲述 :)。

Recode对话框

Recode对话框用于从原变量值按照某种一一对应的关系生成新变量值,可以将新值赋给原变量,也可以生成一个新变量。

例2.3  在Li1_1.sav中生成新变量temp3,当血磷值小于1时取值为0,1~2时取值为10,大于2时取值为20。

解:选择菜单Transform==>Record==>Into Different Variables,Recode对话框如下:

将血磷值(x)选入Input Variable->Output Variable框,此时Output Variable框变黑,在其中键入新变量名temp3并单击Change,可见原来的x->?变成了x->temp3。现在单击“Old and New Values”,系统弹出变量值定义对话框如下:

许多东西和前面类似,不再重复。按照题目的要求,选择Range:Lowest through,在右侧框中键入1,然后在右上方的Value右侧框中键入对应的新变量值0,此时下方Add键变黑,单击它,Old->New框中就会加入Lowest thru 1->0,按照类似的方法依次加入另两条转换规则,最终Old->New框中共有Lowest thru 1->0、1 thru 2->10、Else->20三条,现在单击Continue,再单击OK,系统就会按要求生成新变量temp3。

哎呀不得了,图片太多了,虽然这样非常直观,但下载速度太慢了。等大家对基本界面操作熟悉了后,我们将对比较简单的对话框试着对操作用文字的方式描述,比如上面的操作我们将用文字表达为:

  1. Output Variable框:选入x

  2. Output Variable Name框:键入temp3:单击Change钮

  3. 选中x->temp3:单击Old and New Values钮:

  4.   Range:Lowest through单选钮:键入1:New Value Value单选钮:键入0:单击Add钮

  5.   Range: through单选钮:两侧分别键入1、2:New Value Value单选钮:键入10:单击Add钮

  6.   Range: All other values单选钮:New Value Value单选钮:键入20:单击Add钮

  7.   单击Continue

  8. 单击OK

怎么样,还能理解吧。

Categorize Variables对话框

Categorize Variables对话框用于将连续性变量自动按要求分成等间距的几类。其界面非常简单,许多东西都是我们所熟悉的,唯一特别的是右下方的number of categories框,用于输入变量的等级数,默认为4,比如我们希望将血磷值按大小分成5个等级,先将血磷值选入Create Categories框,然后将下面的4改为5,单击OK,就会看到系统产生了一个新变量nx(即number of x之意),其取值就对应了血磷值相应的5个等级(1~5)。重复一下,具体操作步骤为:

  1. Create Categories框:选入x
  2. Number of categories框:5
  3. OK

Rank Cases对话框

例2.4  请分组计算血磷值的秩和。

解:选择菜单Transform==>Rank Cases,弹出Rank Cases对话框如下:

将血磷值选入Variable框,分组变量选入By框,单击OK即可。系统会建立一个新变量rx(即原变量名前加r表示Rank之意),其取值为x分组的秩次。

解释一下Rank Cases对话框的其他几个零件:

  • 左下角的Assign Rank 1 to框架用于选择将秩次1赋给最小值还是最大值;

  • 中下部的Display summary tables复选框用于确定是否在结果窗口内输出结果报表;

  • Rank Types钮用于定义秩次类型,有Rank(秩分数)、Savage评分(新变量值按指数分布)、Fractional rank(新变量值是秩分数除以非缺失值观测量的权重之和)、Fractional rank %(新变量值是秩分数除以非缺失值观测量数乘100)、Sum of case weights(新变量值是各观测量的权重之和)、Ntiles(新变量值是按所选变量的百分位数分组的组序号),默认值为Rank。单击More按钮,还会有更多的设置,这里就不再讲了。

  • Ties钮用于定义对相同值观测量的处理方式,可以是取平均秩次、最小值、最大值或当作一个记录处理,默认值为取平均秩次。

Automatic Record对话框

该对话框用于按原变量值的大小生成新变量,变量值就是原值的大小次序,功能和Rank Cases对话框重复(等价于相同值观测量当作一个记录处理的情况)。

Create Time Series对话框

用于自动生成时间序列变量,由于太专业,这里不做过多解释。

Replace Missing Value对话框

用于填充缺失值,结果存入一个新变量。填充方法有:序列的均数、相邻若干点的均数、相邻若干点的中位数、线性内插、线性外延,默认值为序列的均数。

2.2.2  数据的录入

2.2.2.1  直接录入

我想直接录入的问题就不用多讲了吧,直接敲就是了!

2.2.2.2  数据录入技巧

和其他常用统计软件相比,SPSS数据界面最大的优势就是支持鼠标的拖放操作,以及拷贝粘贴等命令,下面的数据录入技巧就是对这些功能的利用。

连续多个相同值的输入

如前面group变量有连续多个1,如果直接输入,可以在第一格内输入1并回车,然后回到刚才的单元格并单击右键,选择copy,最后用拖放方式选中所有应输入1的单元格,单击右键并选择paste,所有选中的单元格就会都被刚才拷贝的1填充。

将EXCEL数据直接引入SPSS

Excel已经打开原数据,并且数据量较少的时候,可以直接用拷贝粘贴的方法将数据引入SPSS:先在EXCEL中选中所有的数据(不包括变量名),然后选择拷贝命令;然后切换到SPSS,最好使行1列1单元格成为当前单元格,然后执行粘贴命令,数据就会全部转入SPSS,再定义相应的变量即可。


【本文由 中国心理学家网 发布,转载须保留本文链接!手机浏览网页显示不完整时,请点击网页底部的电脑版。欢迎关注本站微信公共号:xinlixuejianwang

相关专题:

相关信息:
 没有相关信息

相关评论:
 没有相关评论
发表、查看更多关于该信息的评论 将本信息发给好友 打印本页
版权所有  中国心理学家网技术支持创立互联    通讯地址:安徽医科大学医学心理学150#   邮编:230032

联系电话:0551—2826223  E-mail:cnpsy@126.com QQ:619938829  皖ICP备08103527号-3国内心理学类综合性门户网站
中国心理学家网电脑版 中国心理学家网手机版 中国心理学家网微信公共号:xinlixuejianwang