RECODE

La commande RECODE est utilisée pour modifier certaines ou toutes les valeurs d’une variable. Les nouvelles valeurs peuvent être stockées dans la même variable ou dans une nouvelle.

Exemple simple :

RECODE var1 var2 (1,2 = 1) (3,4 = 2).

Exemple plus complexe :

RECODE var1 (1,2 = 1) (3 thru 8 = 2) (missing = 99) (else = copy)
INTO var1new.

Généralités

Supposons que nous ayons une variable famimpor avec les valeurs 1, 2, 3 et 4, mesurant l’importance d’avoir une famille pour le répondant.

RECODE famimpor (4=3).

Cela change toutes les occurrences de la valeur 4 en valeur 3. La valeur 3 d’origine reste inchangée. (Si vous avez des étiquettes de valeur, peut-être devriez-vous les modifier maintenant en conséquence). Toutes les autres valeurs restent également inchangées.

RECODE famimpor (1,2 =1) (3,4 = 2).

Cela crée une variable dichotomique avec un point de coupure entre 2 et 3.

RECODE famimpor (1=4) (2=3) (3=2) (4=1).

Cela inverse l’ordre des valeurs. Notez que cela peut être réalisé plus facilement avec la commande COMPUTECOMPUTE famimpor = 5 - famimpor.). Cela peut être utile si les catégories sont nombreuses.

Créer de nouvelles variables

Un problème est que tous les exemples ci-dessus modifient les valeurs originales de la variable. Vous ne devriez le faire que si soit vous pouvez reconstruire les valeurs originales à partir des nouvelles (ce ne serait possible que dans le dernier exemple !), soit si vous êtes sacrément sûr d’avoir une copie valide de votre ensemble de données ailleurs. Heureusement, vous pouvez créer de nouvelles variables avec la commande RECODE en ajoutant INTO NEWVAR. Voir les exemples suivants.

RECODE famimpor (1,2 =1) (3,4 = 2) INTO famimpod.

Ceci crée une variable dichotomique avec un seuil de coupure entre 2 et 3. L’ancienne variable reste cependant intacte, et la variable dichotomique est ajoutée à l’ensemble de données avec le nom famimpod (avec « D » indiquant que vous avez une variable dichotomique. J’utilise assez fréquemment de tels dispositifs mémotechniques, mais vous n’êtes bien sûr pas obligé de le faire.)

Notez toutefois que vous devez prendre certaines précautions lorsque vous enregistrez dans une nouvelle variable. Dans ce cas, vous devez être sûr que la nouvelle variable possède toutes les valeurs valides que vous souhaitez qu’elle ait. Si la commande RECODE ne nomme qu’une partie des valeurs, toutes les autres valeurs seront traitées comme des valeurs manquantes du système. Pourtant, il existe un moyen simple de régler ce problème.

Faux : RECODE famimpor (4=3) INTO famimpon.

Cela changerait toutes les occurrences de la valeur 4 en valeur 3. Cependant, toutes les autres valeurs seraient traitées comme manquantes par le système. Voici la meilleure façon de procéder :

RECODE famimpor (4=3) (ELSE=COPY) INTO famimpon.

Cela change toutes les occurrences de la valeur 4 en valeur 3, et toutes les autres valeurs sont copiées dans la nouvelle variable. Bien entendu, vous pouvez effectuer autant de recodages explicites que vous le souhaitez, puis traiter le reste via ELSE=COPY.

La partie ELSE de la commande RECODE n’est pas limitée au cas  » COPY  » qui vient d’être expliqué. Vous pouvez également l’utiliser avec des valeurs explicites, comme dans l’exemple suivant :

RECODE famimpor (4,3=2) (ELSE=1) INTO famimpor.

Un problème avec RECODE INTO, cependant, est que les étiquettes des variables et des valeurs ne sont pas automatiquement créées (comment le devraient-elles ?). N’oubliez donc pas d’étiqueter la nouvelle variable.

Plusieurs variables

peuvent être traitées dans une RECODE instruction, à condition que toutes les variables doivent être affectées de la même manière, comme dans l’exemple suivant.

RECODE famimpor workimpo chldimpo (4,3=2) (ELSE=1).

Cependant, si vous souhaitez RECODE ces variables DANS de nouvelles variables, pour chaque variable une RECODE ligne de commande distincte est nécessaire.

Traitement des valeurs manquantes

Les valeurs manquantes peuvent être traitées via les mots-clés « sysmis » ou « missing ».

Supposons qu’en plus des valeurs 1 à 4, il y a aussi les valeurs 8 et 9 qui sont définies comme des valeurs manquantes. Voici quelques exemples et ce qu’ils font.

RECODE famimpor (manquant = 8).

Toutes les valeurs manquantes (c’est-à-dire les valeurs 8 et 9 et peut-être aussi les valeurs manquantes du système) auront la valeur 8. 8 sera toujours défini comme manquant.

RECODE famimpor (manquant = 7).

Toutes les valeurs manquantes (c’est-à-dire les valeurs 8 et 9 et peut-être aussi les valeurs manquantes du système) auront la valeur 7. 7 ne sera pas défini comme manquant !

Si vous avez des valeurs manquantes système et que vous voulez recoder uniquement celles-ci à une autre valeur, vous pouvez utiliser le mot clé « sysmis » au lieu de « manquant ».

RECODE famimpor (sysmis = 7).

Encore, si vous avez défini les valeurs 8 et 9 comme manquantes, 7 ne sera pas reconnu comme une valeur (anciennement) manquante. Vous pouvez souhaiter soit définir 7 maintenant comme manquante, soit attribuer une étiquette de valeur qui vous indique la signification de 7.

Simplifications

Souvent, plusieurs valeurs d’une variable doivent être traitées. Certains mots-clés permettent de faciliter ce processus.

RECODE famimpor (plus bas à 3 = 3).
RECODE famimpor (2 à plus haut = 2).

La première commande recode toutes les valeurs de la valeur la plus basse à (et y compris) la valeur 3 en la valeur 3. La deuxième commande recode toutes les valeurs de la valeur 2 à (et y compris) la valeur la plus élevée dans la valeur 2. Notez que la valeur « la plus basse » peut être abrégée par « lo » et la valeur « la plus haute » par « hi ». ATTENTION : En supposant que 8 et 9 sont toujours définis comme des valeurs manquantes de l’utilisateur, ils seront recodés en 2 dans le dernier exemple (et ne seront bien sûr plus définis comme manquants).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.