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

时间:2015-09-29 14:48:59

标签: spss

我是一个完整的spss-novice,我无法弄明白。谷歌也没有给出任何答案(或者我不知道如何谷歌这个问题......这也是可能的)。

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

性别(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女 .. 等等。

我认为我必须对计算或重新编码为不同的变量做一些事情,但无法弄清楚要做什么。

谁能帮帮我?

2 个答案:

答案 0 :(得分:3)

我不知道这是否是'正确'的方式,但这就是我完成它的方式。建议如何改进它,仍然赞赏:)

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

答案 1 :(得分:2)

查找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".

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