Il comando RECODE
è usato per cambiare alcuni o tutti i valori di una variabile. I nuovi valori possono essere memorizzati nella stessa variabile o in una nuova.
Esempio semplice:
RECODE var1 var2 (1,2 = 1) (3,4 = 2).
Esempio più complesso:
RECODE var1 (1,2 = 1) (3 thru 8 = 2) (missing = 99) (else = copy)
INTO var1new.
Generale
Assumiamo di avere la variabile famimpor con valori 1, 2, 3 e 4, che misura quanto sia importante avere una famiglia per l’intervistato.
RECODE famimpor (4=3).
Questo cambia tutte le occorrenze del valore 4 al valore 3. Il valore originale 3 rimane invariato. (Se hai delle etichette di valore, forse dovresti cambiarle ora di conseguenza). Anche tutti gli altri valori rimangono invariati.
RECODE famimpor (1,2 =1) (3,4 = 2).
Questo crea una variabile dicotomica con punto di separazione tra 2 e 3.
RECODE famimpor (1=4) (2=3) (3=2) (4=1).
Questo inverte l’ordine dei valori. Notate che questo può essere ottenuto più facilmente con il comando COMPUTE
COMPUTE famimpor = 5 - famimpor.
). Questo può essere utile se ci sono molte categorie.
Creare nuove variabili
Un problema è che tutti gli esempi precedenti cambiano i valori originali della variabile. Dovreste farlo solo se potete ricostruire i valori originali da quelli nuovi (questo sarebbe possibile solo nell’ultimo esempio!) o se siete dannatamente sicuri di avere una copia valida del vostro set di dati altrove. Fortunatamente, potete creare nuove variabili con il comando RECODE
aggiungendo INTO NEWVAR
. Vedere i seguenti esempi.
RECODE famimpor (1,2 =1) (3,4 = 2) INTO famimpod.
Questo crea una variabile dicotomica con punto di separazione tra 2 e 3. La vecchia variabile rimane intatta, però, e la variabile dicotomica viene aggiunta al set di dati con il nome famimpod (con “D” che indica che avete una variabile dicotomica. Io uso questi dispositivi memotecnici abbastanza frequentemente, ma ovviamente non siete obbligati a farlo.)
Nota, tuttavia, che devi prendere alcune precauzioni quando fai il RECODING INTO di una nuova variabile. In questo caso, dovete essere sicuri che la nuova variabile abbia tutti i valori validi che volete che abbia. Se il comando RECODE
nomina solo una parte dei valori, tutti gli altri valori saranno trattati come valori mancanti del sistema. Eppure, c’è un modo semplice per affrontare questo problema.
Sbagliato: RECODE famimpor (4=3) INTO famimpon.
Questo cambierebbe tutte le occorrenze del valore 4 nel valore 3. Tuttavia, tutti gli altri valori sarebbero trattati come sistema mancante. Ecco il modo migliore:
RECODE famimpor (4=3) (ELSE=COPY) INTO famimpon.
Questo cambia tutte le occorrenze del valore 4 al valore 3, e tutti gli altri valori sono copiati nella nuova variabile. Naturalmente, potete fare tutte le ricodifiche esplicite che volete e poi trattare il resto tramite ELSE=COPY.
La parte ELSE del comando RECODE non è limitata al caso “COPY” appena spiegato. Potete anche usarla con valori espliciti, come nel seguente esempio:
RECODE famimpor (4,3=2) (ELSE=1) INTO famimpor.
Un problema con RECODE INTO, tuttavia, è che le etichette di variabili e valori non vengono create automaticamente (come dovrebbero?). Quindi non dimenticate di etichettare la nuova variabile.
Diverse variabili
possono essere indirizzate in una sola dichiarazione RECODE
, a condizione che tutte le variabili siano interessate allo stesso modo, come nel seguente esempio.
RECODE famimpor workimpo chldimpo (4,3=2) (ELSE=1).
Tuttavia, se volete RECODE
queste variabili INTO nuove variabili, per ogni variabile è necessaria una linea di comando RECODE
separata.
Trattamento dei valori mancanti
I valori mancanti possono essere affrontati tramite le parole chiave “sysmis” o “missing”.
Assumiamo che oltre ai valori da 1 a 4, ci siano anche i valori 8 e 9 che sono definiti come valori mancanti. Ecco alcuni esempi e cosa fanno.
RECODE famimpor (missing = 8).
Tutti i valori mancanti (cioè i valori 8 e 9 e forse anche i valori mancanti di sistema) avranno il valore 8. 8 sarà ancora definito come mancante.
RECODE famimpor (missing = 7).
Tutti i valori mancanti (cioè i valori 8 e 9 e forse anche i valori mancanti del sistema) avranno il valore 7. 7 non sarà definito come mancante!
Se avete valori mancanti di sistema e volete ricodificare solo questi ad un altro valore, potete usare la parola chiave “sysmis” invece di “missing”.
RECODE famimpor (sysmis = 7).
Ancora una volta, se avete definito i valori 8 e 9 come mancanti, 7 non sarà riconosciuto come un valore (precedentemente) mancante. Potreste voler definire 7 ora come mancante o assegnare un’etichetta di valore che dica il significato di 7.
Semplificazioni
Spesso, diversi valori di una variabile devono essere affrontati. Alcune parole chiave aiutano a rendere questo processo più facile.
RECODE famimpor (lowest thru 3 = 3).
RECODE famimpor (2 thru highest = 2).
Il primo comando ricodifica tutti i valori dal valore più basso al (e incluso) valore 3 nel valore 3. Il secondo comando ricodifica tutti i valori dal valore 2 al valore più alto (compreso) nel valore 2. Notate che “più basso” può essere abbreviato come “lo” e “più alto” come “hi”. ATTENZIONE: Supponendo che 8 e 9 siano ancora definiti come valori mancanti dell’utente, questi saranno ricodificati in 2 nell’ultimo esempio (e naturalmente non saranno più definiti come mancanti).