我是一个完全的spss新手,我不明白。谷歌也没有给出任何答案(或者我不知道如何谷歌这个问题…这也是可能的)。
我必须创建一个基于两个变量的新变量:
性别(0=男,1=女)
和
Oudad(1= 18-29岁;2 =年龄30-54;3 = 55 - 89岁;4 =取消99年).
新变量必须有六个类别:
1. 29男
2. 18 -女性
3.30-54男
4. 30-54女性
. .等等......
我想我必须做一些计算或重新编码成不同的变量,但不知道该怎么做。
谁能帮我?
我不知道这是不是"正确"的方法,但这是我完成它的方法。建议如何改进它,仍然是感激的:)
IF (gender = 0 & agegroup =1) GenAge=1.
IF (gender = 0 & agegroup =2) GenAge=2.
IF (gender = 0 & agegroup =3) GenAge=3.
IF (gender = 1 & agegroup =1) GenAge=4.
IF (gender = 1 & agegroup =2) GenAge=5.
IF (gender = 1 & agegroup =3) GenAge=6.
EXECUTE.
VALUE LABELS GenAge
1 'Young man'
2 'Middle-aged man'
3 'Old man'
4 'Young woman'
5 'Middle-aged woman'
6 'Old woman'.
查找DO IF
和/或IF
命令
DO IF (Gender = 0 /* Male*/ AND Age = 1 /* 18 -29 */).
COMPUTE GenAge=1.
ELSE IF (Gender = 1 /* Female */ AND Age = 1 /* 18 -29 */).
COMPUTE GenAge=2.
ELSE IF (Gender = 0 /* Male */ AND Age = 2 /* 30 - 54 */).
COMPUTE GenAge=3.
ELSE IF (Gender = 1 /* Female */ AND Age = 2 /* 30 - 54 */).
COMPUTE GenAge=4.
ELSE IF (Gender = 0 /* Male */ AND Age = 3 /* 55 - 89 */).
COMPUTE GenAge=5.
ELSE IF (Gender = 1 /* Female */ AND Age = 3 /* 55 - 89 */).
COMPUTE GenAge=6.
END IF.
每对/*
&*/
只是为了使代码更容易读,更清楚地看到代码所代表的内容,因此完全是可选的。
不以这种方式编写一系列IF
语句(如果有大量的类别,这可能会更加麻烦),我通常会选择以另一种方式编写类似这样的代码,例如:
RECODE Gender (0=2) (ELSE=COPY).
VALUE LABELS Gender 1 "Female" 2 Male".
COMPUTE GenAge=SUM(Gender*10, Age).
VALUE LABELS GenAge.
11 "Female 18 - 29"
12 "Female 30 - 54"
13 "Female 55 - 89"
21 "Male 18 - 29"
22 "Male 30 - 54"
23 "Male 55 - 89".
对于这种性质的分类变量,它通常与分配给它的代码无关,所以我总是喜欢一个解决方案,它涉及编写尽可能少的代码,而且也不依赖于数据本身。如果顺序很重要,可以选择用第10个单位整数表示Age
,用单个单位整数表示Gender
。