/ / Перекодируйте кілька стовпців в єдину змінну - spss, recode

Відтворення декількох стовпців у єдину змінну - spps, recode

У мене шість стовпців: 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.