2015-10-14 1 views
2

Simple J'ai six colonnes: age01 ... age06Recode plusieurs colonnes dans la variable

Ils contiennent un 1 ou 0 selon que le répondant inscrit dans cette catégorie d'âge.

Les données sont les suivantes: Age columns

Les catégories d'âge sont mutuellement exclusives, répondant ne peut pas répondre à 1 à plus de 1, et au moins 1 doit être égal 1.

Comment puis-je recoder ce tel que je reçois une variable:

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

une fois que je reçois cela, l'étape suivante consiste à échanger sur chacun d'entre eux pour une valeur moyenne. c'est à dire. Age0 -> 24.5. Mais je suis capable de le faire à partir du format ci-dessus.

Répondre

2

Je suppose que vous voulez quelque chose comme ça (plutôt que de coder AGECAT comme variables de chaîne qui votre message peut suggérer):

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". 

Au hasard (le plus souvent pas tout à fait de fortes chances), l'âge dichotomies ne sont pas mutuellement exclusifs, je voudrais ajouter quelques lignes de code supplémentaires pour la mesure en toute sécurité, comme ceci:

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

Vous pouvez essayer:

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. 

Cependant, je ne vois pas la sagesse de recoder à la valeur moyenne de vos groupes d'âge - si vous avez l'intention d'utiliser l'âge comme IV, vous obtiendrez le même résultat en recodant simplement la variable de 1 à 6.