根据性别重新编码或计算年龄类别

Recode or compute age categories based by gender

我是一个完全的spss新手,我想不通。 Google 也没有给出任何答案(或者我不知道如何 google 这个问题..这也是可能的)。

我必须根据两个变量创建一个新变量:

性别(0=男,1=女)

oudad(1=18-29 岁;2=30-54 岁;3=55-89 岁;4=取消选择 99)。

新变量必须有六类:
1. 18-29 男
2. 18-29 岁女性
3. 30-54岁男性
4. 30-54岁女性
.. 等等。

我想我必须做一些计算或重新编码成不同的变量,但不知道该做什么。

谁能帮帮我?

查找 DO IF and/or 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".

对于这种性质的分类变量,它通常与分配给它的代码无关,所以我总是更喜欢一种解决方案,它涉及编写尽可能少的代码并且也不依赖于数据本身。如果顺序很重要,您始终可以选择 Age 由第十个单位整数表示,Gender 表示单个单位整数。

我不知道这是否是 'correct' 的方法,但这是我完成它的方法。建议如何改进它,仍然很感激:)

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'.