У мене шість стовпців:
age01 ... age06
Вони містять a 1
або 0
залежно від того, підходить респондент до цієї вікової категорії.
Вікові категорії взаємно виключають, респондент не може відповісти від 1 до більше, а принаймні 1 повинен дорівнювати 1.
Як я можу перекодувати це так, щоб отримати змінну за допомогою:
respondent age_category
1 age01
2 age01
3 age04
4 age05
5 age06
Після того, як я отримаю це, наступним кроком є заміна кожного з них на середнє значення. тобто. Вік0 -> 24.5. Але я в змозі зробити це у форматі вище.
Відповіді:
2 для відповіді № 1Я підозрюю, що вам потрібно щось подібне (а не кодування 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".
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.