第二章数据文件的管理(下) (医学统计之星:张文彤) 2.2.1.2从原有变量计算新变量 从头定义变量的情况多数在建立数据集时出现。但是,当数据集已经建立, 需要整理、转换变量时,碰到的更多情况是需要根据某种条件从原有变量计算新 变量。下面我们将按菜单条目的顺序依次讲解他们的功能。但是,首先我们需要 了解一下所用的对话框界面的情况 【SPSS对话框元素介绍】 下面是我们在第一章曾经见过的两样本t检验对话框: [ Independent-Samples T Test Test Variable(s) Reset Cancel Hel muping Variable Define Grot Options… 这是一个非常典型的SPSS对话框。它包含了许多具有SPSS特色的对话框元 素 。对话框左侧为候选变量列表框,里面列出了可被该对话框使用的变 右上方为 Test variables框,可将变量选入其中;注意在两个框的 中间用 ”相连,这是变量移动按钮,其方向表明是将变量从那个框 移动到哪个框,上图中我们选中了变量 group,两个移动按钮均变黑并向 右指,表明变量 group可以移动到他们右侧的两个框里去,改变当前框(在 其他两个框里单击),移动按钮就会转向、变灰等以表明不同的意思(墙 头草一个,可别小看这个功能,我想用VB实现这个功能,也是费了些工 夫才把它搞定了);
第二章 数据文件的管理(下) (医学统计之星:张文彤) 2.2.1.2 从原有变量计算新变量 从头定义变量的情况多数在建立数据集时出现。但是,当数据集已经建立, 需要整理、转换变量时,碰到的更多情况是需要根据某种条件从原有变量计算新 变量。下面我们将按菜单条目的顺序依次讲解他们的功能。但是,首先我们需要 了解一下所用的对话框界面的情况。 【SPSS 对话框元素介绍】 下面是我们在第一章曾经见过的两样本 t 检验对话框: 这是一个非常典型的 SPSS 对话框。它包含了许多具有 SPSS 特色的对话框元 素: o 对话框左侧为候选变量列表框,里面列出了可被该对话框使用的变 量; o 右上方为 Test Variables 框,可将变量选入其中;注意在两个框的 中间用“ ”相连,这是变量移动按钮,其方向表明是将变量从那个框 移动到哪个框,上图中我们选中了变量 group,两个移动按钮均变黑并向 右指,表明变量 group 可以移动到他们右侧的两个框里去,改变当前框(在 其他两个框里单击),移动按钮就会转向、变灰等以表明不同的意思(墙 头草一个,可别小看这个功能,我想用 VB 实现这个功能,也是费了些工 夫才把它搞定了);
。右侧为一排五个按钮,分别是确定、粘贴、重置、取消和帮助。这 五个兄弟也是几乎永远一起出现的,另外四个大家都比较熟悉了,重置 ( Reset)按钮用于取消对话框内已做的选择,恢复到默认的状态; 。最下方有个 Options按钮,用于设置专门用于该对话框的选项 OK、 Paste两个按钮为灰色,表明所需条件尚未满足,该按钮暂不可 用。同理, Grouping variable框下方的 Define groups按钮为灰色显示, 也表明暂不可用 【 Compute Variable对话框】 例3.2在1i1l1.sav中建立新变量temp,令其值当血磷值大于1时为2, 否则为1。 解:这里需要用到 Compute Variable对话框,外加一点技巧。首先给变量 temp均赋值为1,然后将血磷值大于1的记录其tem变量值改为2即可。选择 菜单 Transform==> Compute,弹出 Compute Variable对话框如下: 区 Target Variable Numeric Expression: Type&Label 分组变量 groupl 缈血磷值冈 S9cndn:□ 1 23 ANYtestvalue, value. 3 ARSIN(numexpr ARTAN(numexpr Delete CDFNORM(zvalue CDF BERNOULLI[ p] If OK Paste Reset Cancel Help 左上角为需要计算的变量名,在其中键入“temp”,此时“Type& Lable”按 钮就会变黑,喜欢精确的朋友可以在这里对tem进行详细的定义,但如果你和 我一样非常懒,就可以对它视而不见(不要生气,聪明人大多都非常懒:));左 下方为候选变量列表,现在还用不着:中部为类似计算器的软键盘,可以用鼠标 按键输入数字和符号,这里我们直接输入“1”,输入的内容回立刻在右上方的 数值表达式窗口中出现:软键盘右侧为函数窗口,可以在这里找到并使用所需的 SPSS函数;这次也用不到。好,现在“OK”按钮已经变黑,单击他,系统就会 自动生成一个新变量temp,并且取值均为1
o 右侧为一排五个按钮,分别是确定、粘贴、重置、取消和帮助。这 五个兄弟也是几乎永远一起出现的,另外四个大家都比较熟悉了,重置 (Reset)按钮用于取消对话框内已做的选择,恢复到默认的状态; o 最下方有个 Options 按钮,用于设置专门用于该对话框的选项; o 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 EXPO NOT 在函数窗口中选中某个函数并单击右键,系统就会弹出该函数的用法说明。 函数主要是和变量名组合起来使用的,比如说ABS(x)就是取变量x的绝对 好,现在开始进行第二步,再次选择菜单 Transform=> Compute,系统也再 次弹出这个对话框一一等等!注意到了吗?该对话框自动记住了你上次输入的内 容,几乎所有SPSS的对话框都有这个特性,这会大大方便我们的使用。好,将 数值表达式窗口中的1改为2,然后单击中下部的“If”按钮,系统弹出记录选 择对话框如下: Compute Variable: If Cases 分组变量 Igroup F Include all cases 吵血磷值冈 C Include if case satisfies condition temp 9 Functions: ARSIN() ARTAN(numexpr) CDFNORM(zvalue Delete cDF BERNOULLI(qpl Continue Cancel Help 不需要太多解释,大部分内容都是前面见过的。由于我们这里不是对所有记 录做变换,因此选中第二个单选钮“ Include if case statisfies confition:” 此时下方的所有窗口变亮,表明现在可用:而“ Continue”按钮变灰,表明当前 还没有提供所需的信息,好,我们就来提供,在左侧选中血磷值(x),然后单击 x就被引入了右侧的变量框,任你用键盘或者用鼠标,总之将下面这
软键盘上几个奇奇怪怪的符号的含义如下: ~= & | ** ~ 不等号,等价于 <> 逻辑符号 AND 逻辑符号 OR 乘方,相当于函数 EXP() 逻辑符号 NOT 在函数窗口中选中某个函数并单击右键,系统就会弹出该函数的用法说明。 函数主要是和变量名组合起来使用的,比如说 ABS(x)就是取变量 x 的绝对 值。 好,现在开始进行第二步,再次选择菜单 Transform==>Compute,系统也再 次弹出这个对话框--等等!注意到了吗?该对话框自动记住了你上次输入的内 容,几乎所有 SPSS 的对话框都有这个特性,这会大大方便我们的使用。好,将 数值表达式窗口中的 1 改为 2,然后单击中下部的“If”按钮,系统弹出记录选 择对话框如下: 不需要太多解释,大部分内容都是前面见过的。由于我们这里不是对所有记 录做变换,因此选中第二个单选钮“Include if case statisfies confition:”, 此时下方的所有窗口变亮,表明现在可用;而“Continue”按钮变灰,表明当前 还没有提供所需的信息,好,我们就来提供,在左侧选中血磷值(x),然后单击 “ ”,x 就被引入了右侧的变量框,任你用键盘或者用鼠标,总之将下面这
个算式补充完:x1。现在可见“ Continue”按钮再度变黑。在它又变灰之前赶 快单击它(开个玩笑),系统回到 Compute Variable对话框,请注意If按钮右 侧的变化:x>2。如果你做的结果不一样,请重来一遍。 现在单击“OK”按钮,由于我们要替换变量值,系统会弹出一个确认对话框 确认替换,马上你就会看到,我们已经把这道题做完了。 【 Count对话框】 Count对话框用于计算某个值或某些值在某个变量的取值中是否出现(好象 有点拗口),比如我们想看看有哪些记录的血磷值在2~3之间,选择菜单 Transform==> Count,系统弹出 Count对话框如下: L': Count Occurrences of Values within Cases Target Variable Target Label: OK 分组变量[grou Variables: Paste 缈血磷值冈 Reset temp Cancel Help Define values Target Variable框中用于指定记录变量值是否出现的变量名,在这里输入 emp2;选中血磷值(x),将其选入 Variables窗口,此时“ Define values”按 钮变黑,单击它,系统弹出变量值定义窗口如下
个算式补充完:x>1。现在可见“Continue”按钮再度变黑。在它又变灰之前赶 快单击它(开个玩笑),系统回到 Compute Variable 对话框,请注意 If 按钮右 侧的变化:x>2。如果你做的结果不一样,请重来一遍。 现在单击“OK”按钮,由于我们要替换变量值,系统会弹出一个确认对话框, 确认替换,马上你就会看到,我们已经把这道题做完了。 【Count 对话框】 Count 对话框用于计算某个值或某些值在某个变量的取值中是否出现(好象 有点拗口),比如我们想看看有哪些记录的血磷值在 2~3 之间,选择菜单 Transform==>Count,系统弹出 Count 对话框如下: Target Variable 框中用于指定记录变量值是否出现的变量名,在这里输入 temp2;选中血磷值(x),将其选入 Variables 窗口,此时“Define Values”按 钮变黑,单击它,系统弹出变量值定义窗口如下:
Count Values within Cases: Values to Count Value Values to Count: o value. C System-missing C System- or user-missing Change C Ra Remove through C Range Lowest through C Range through highest Continue Cancel Help 左半部为变量值定义窗口,可以定义某个值、系统缺失值、系统或用户定义 缺失值、变量值范围、小于某值或大于某值。我们这里是第四种情况:选择 Range, 在 through两侧分别键入2、3,然后单击已变黑的“Add”按钮,“2thru3 就会被加入“ Values to count”框内。然后单击“ Continue”,再单击 Count 对话框的“OK”,可以看到系统自动生成变量temp2,其中10、11号记录因血 磷值介于2和3之间,temp2取值为1,其余的记录temp2取值均为0。 s0s,Ss0s,请大家千万注意, Count对话框有一个潜在的bugs,当你需要计 算同时满足两个变量取值条件的记录数有多少时,直接用该对话框会得出完全错 误的结果。这里有一点技巧,需要对对话框生成的指令加以修改,至于怎么修改 嘛,我们将在 Syntax(语法)窗口使用详解一章中讲述:)。 【 Recode对话框】 Recode对话框用于从原变量值按照某种一一对应的关系生成新变量值,可 以将新值赋给原变量,也可以生成一个新变量。 例2.3在Li11.sav中生成新变量temp3,当血磷值小于1时取值为0 1~2时取值为10,大于2时取值为20。 解:选择菜单 Transform=> Record==> Into different Variables, Recode 对话框如下:
左半部为变量值定义窗口,可以定义某个值、系统缺失值、系统或用户定义 缺失值、变量值范围、小于某值或大于某值。我们这里是第四种情况:选择 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 对话框如下: