将比例变量更改为多个名义变量

时间:2015-04-15 13:55:25

标签: spss

我尝试创建一个年龄变量,然后将其拆分为多个变量,以便将多个文件聚合在一起。我一直在使用以下语法将Age变量拆分为9个年龄类别,它工作正常,但我想将它现在拆分为50个变量。数据集中的年龄范围从20到70,因此我想创建50个变量,age20,age21等,其中1为年龄变量(即我25岁,我的记录将有一个1和0表示所有其他agexx变量)。我知道我可以使用下面的代码并以这种方式创建50个变量,但是有一种更简单的方法可以获取年龄的zz结果,然后为agezz设置值为1吗?

COMPUTE Date = DATE.DMY(31,03,2014) .
EXECUTE .
COMPUTE Age = DATEDIF(Date, DOB, "years").
VARIABLE LABEL Age.
VARIABLE LEVEL Age (SCALE).
FORMATS Age (F5.0).
VARIABLE WIDTH Age(5).
EXECUTE.

**create new variables**


IF (Age < 25) Age1=1.
EXECUTE.

IF (Age>=25 & Age<30) Age2=1.
EXECUTE.

IF (Age>=30 & Age<35) Age3=1.
EXECUTE.

IF (Age>=35 & Age<40) Age4=1.
EXECUTE.

IF (Age>=40 & Age<45) Age5=1.
EXECUTE.

IF (Age>=45 & Age<50) Age6=1.
EXECUTE.

IF (Age>=50 & Age<55) Age7=1.
EXECUTE.

IF (Age>=55 & Age<60) Age8=1.
EXECUTE.

IF (Age>=60) Age9=1.
EXECUTE.

2 个答案:

答案 0 :(得分:2)

考虑使用RECODE命令创建单个年龄变量,然后进行汇总,特别是如果您的年龄组是互斥的(如您的示例所示)。

RECODE AGE
  (lo thru 24=1)
  (lo thru 29=2)
  (lo thru 34=3)
  (lo thru 39=4)
  (lo thru 44=5)
  (lo thru 49=6)
  (lo thru 54=7)
  (lo thru 59=8)
  (lo thru hi=9) INTO AGEGRP.
FORMATS AGEGRP (F3.0).
VARIABLE LABELS AGEGRP "Age Groups".
VALUE LABELS AGEGRP
  1 "<24"
  2 "25-29"
  3 "30-34"
  4 "35-39"
  5 "40-44"
  6 "45-49"
  7 "50-54"
  8 "55-59"
  9 "60+".

如果出于某种原因你想要为所有年龄生成虚拟代码,请尝试:

DO REPEAT AgeZZ=AgeV1_20 to AgeV1_70 /ZZ=20 to 70.
   COMPUTE AgeZZ=Age=ZZ.
END REPEAT.

/* Or alternatively */.
VECTOR AgeV2_(70).
LOOP #i = 1 to 70.
  COMPUTE AgeV2_(#i) = Age = #i.
END LOOP.

答案 1 :(得分:1)

要为20到69岁之间的年龄创建虚拟变量,可以将DO REPEAT命令与迭代变量一起使用(在本例中为“i”)。

DO REPEAT ageN = age20 TO age69
         / i = 20 TO 69.
    COMPUTE ageN = (age=i).
END REPEAT.
EXECUTE.

此代码就像您运行以下行一样:

COMPUTE age20 = (age=20). /* If age=20 then age20 = 1 else age20 = 0.
COMPUTE age21 = (age=21).
COMPUTE age22 = (age=22).
...