我有六列:
1
它们包含0
或respondent age_category
1 age01
2 age01
3 age04
4 age05
5 age06
,具体取决于受访者是否符合该年龄段。
年龄类别是互斥的,受访者不能回答1到1以上,并且至少1必须等于1。
我如何重新编码,以便我得到一个变量:
Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force
一旦我得到了这个,下一步就是将这些中的每一个换成平均值。即。 Age0 - > 24.5。但我可以从上面的格式中做到这一点。
答案 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。