2

私は6つの列を持っています: age01 ... age06

回答者がその年齢カテゴリに適合するかどうかに応じて、1またはが含まれます。0

データは次のとおりです。 年齢列

年齢カテゴリは相互に排他的であり、回答者は 1 対 2 以上で回答することはできず、少なくとも 1 人が 1 に等しくなければなりません。

変数を取得するようにこれを再コーディングするにはどうすればよいですか:

respondent age_category
1   age01
2   age01
3   age04
4   age05
5   age06

これを取得したら、次のステップは、これらのそれぞれを平均値に交換することです。すなわち。Age0 -> 24.5. しかし、私は上記の形式からそれを行うことができます。

4

2 に答える 2

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 として再コーディングするだけで同じ結果が得られます。

于 2015-10-14T15:10:55.623 に答える
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".
于 2015-10-14T15:09:39.717 に答える