2015-08-03 2 views
1

J'utilise SPSS 20. Dans mon jeu de données est une liste de variables de chaîne que je veux recoder en numérique. À l'origine, je voulais qu'ils soient recodés en eux-mêmes. Je réalise que cela n'est pas possible car SPSS parcourt le jeu de données au cas par cas et une variable ne peut avoir qu'un seul type à la fois. Je veux donc qu'ils soient recodés dans de nouvelles variables mais avec le suffixe _rec.SPSS REPEAT: Comment utiliser la variable de réserve dans le nom de la variable?

DO REPEAT var = var_1 var_2 ... var_n. 
    RECODE var (CONVERT) INTO var_rec. 
END REPEAT. 

Mais cela ne crée qu'un seul nouveau var_rec variables non plusieurs nouveaux.

J'ai aussi essayé de programmer une solution de contournement:

COMPUTE Job_2 
STRING Job(A20) 
    DO REPEAT var = var_1 var_2 ... var_n. 
COMPUTE var = Job. 
RECODE Job (CONVERT) INTO Job_2. 
DELETE VARIABLES var. 
COMPUTE var = Job_2. 
END REPEAT. 

Mais cela ne fonctionne pas parce que DELETE VARIABLES ne peut pas être utilisé dans une boucle DO REPEAT.

Donc, je suis de retour à ma question initiale.

Répondre

0

Vous dites qu'ils (variables de chaîne) ne peuvent pas être recodées en eux-mêmes mais ils peuvent utilisent ALTER TYPE

ALTER TYPE var_1 var_2 var_3 (F8.2). 

Où F8.2 est une variable numérique de largeur 8 et 2 chiffres après la virgule.

Vous pouvez utiliser DO REPEAT avec plusieurs liste de figurante de variables, comme suit:

DO REPEAT Old = var_1 var_2 var_3 
    /New = var1_rec var2_rec var3_rec. 
    RECODE Old (CONVERT) INTO New. 
END REPEAT PRINT. 

qui a élargi out est l'équivalent à:

RECODE var_1 (CONVERT) into var1_rec. 
RECODE var_2 (CONVERT) into var2_rec. 
RECODE var_3 (CONVERT) into var3_rec. 

Mais si vous allez faire alors vous pouvez le faire directement dans la commande RECODE, quelque chose comme ceci:

RECODE var_1 var_2 var_3 (CONVERT) INTO var1_rec var2_rec var3_rec. 

Les deux méthodes supposent que les variables d'origine sont toutes des variables de chaîne (de toutes largeurs différentes). Prenez note de ce que fait exactement la fonction CONVERT, à savoir prendre une variable chaîne (contenant des valeurs numériques stockées sous forme de chaîne) et la convertir en une variable de format numérique. Donc, la variable d'entrée est toujours une chaîne et une sortie numérique.

+0

À votre première suggestion: SPSS ne passerait-il pas par chaque liste de variables et recoderait donc var_1, var_2 et va3_3 dans var_1_rec (par exemple)? Seul var_3 serait recodé à la fin. À votre suggestion seccond: Pour ce faire, RECODE a besoin que toutes les variables soient du même type et de la même largeur. – Caspar

+0

Mise à jour post pour aider. –

+0

Merci beaucoup. Je ne savais pas que DO REPEAT fonctionne de cette façon. – Caspar