将多列重新编码为单个变量

时间:2015-10-14 14:31:45

标签: spss recode

我有六列: 1

它们包含0respondent age_category 1 age01 2 age01 3 age04 4 age05 5 age06 ,具体取决于受访者是否符合该年龄段。

数据如下: Age columns

年龄类别是互斥的,受访者不能回答1到1以上,并且至少1必须等于1。

我如何重新编码,以便我得到一个变量:

Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force

一旦我得到了这个,下一步就是将这些中的每一个换成平均值。即。 Age0 - > 24.5。但我可以从上面的格式中做到这一点。

2 个答案:

答案 0 :(得分:2)

我怀疑你想要这样的东西(而不是将AgeCat编码为你的帖子可能建议的字符串变量):

compute AgeCat= sum(age01*1,age02*2,age03*3,age04*4,age05*5).
value labels AgeCat
  1 "Age Category 1"
  2 "Age Category 2"
  3 "Age Category 3"
  4 "Age Category 4".

关于失败的机会(通常不是很高的机会),年龄二分法不是互相排斥的,我会为安全措施增加一些额外的代码行,如下所示:

do if sum(age01 to age05)=1.
  compute AgeCat= sum(age01*1,age02*2,age03*3,age04*4,age05*5).
else if sum(age01 to age05)=0.
  compute AgeCat= -98.
else if sum(age01 to age05)>1.
  compute AgeCat= -99.
end if.
value labels AgeCat
  1 "Age Category 1"
  2 "Age Category 2"
  3 "Age Category 3"
  4 "Age Category 4"
  -98 "No data"
  -99 "Multiple entries".

答案 1 :(得分:2)

您可以尝试:

string new_age_string (a10).
do repeat a = age01 to age06 / b = 24.5 34.5 44.5 54.5 64.5 74.5 / c = "age_01"  "age_02" "age_03" "age_04" "age_05" "age_06".
if a = 1 new_age = b.
if a = 1 new_age_string = c.
end repeat.
exe.

然而,我没有看到重新编码你的年龄组的中间价值的智慧 - 如果你的意图是使用年龄作为IV,那么你得到相同的结果只是将变量重新编码为1至6。