Comanda RECODE
este utilizată pentru a modifica unele sau toate valorile unei variabile. Noile valori pot fi stocate în aceeași variabilă sau într-una nouă.
Exemplu simplu:
RECODE var1 var2 (1,2 = 1) (3,4 = 2).
Exemplu mai complex:
RECODE var1 (1,2 = 1) (3 thru 8 = 2) (missing = 99) (else = copy)
INTO var1new.
Generalități
Să presupunem că avem variabila famimpor cu valorile 1, 2, 3 și 4, care măsoară cât de important este pentru respondent să aibă o familie.
RECODE famimpor (4=3).
Acest lucru schimbă toate aparițiile valorii 4 în valoarea 3. Valoarea inițială 3 rămâne neschimbată. (Dacă aveți etichete de valori, poate că ar trebui să le schimbați acum în mod corespunzător). De asemenea, toate celelalte valori rămân neschimbate.
RECODE famimpor (1,2 =1) (3,4 = 2).
Acest lucru creează o variabilă dihotomică cu punct de tăiere între 2 și 3.
RECODE famimpor (1=4) (2=3) (3=2) (4=1).
Acest lucru inversează ordinea valorilor. Rețineți că acest lucru poate fi realizat mai ușor cu comanda COMPUTE
COMPUTE famimpor = 5 - famimpor.
). Acest lucru poate fi util dacă există multe categorii.
Crearea de noi variabile
O singură problemă este că toate exemplele de mai sus schimbă valorile originale ale variabilei. Ar trebui să faceți acest lucru doar dacă fie puteți reconstrui valorile originale din cele noi (acest lucru ar fi posibil doar în ultimul exemplu!), fie dacă sunteți al naibii de sigur că aveți o copie validă a setului de date în altă parte. Din fericire, puteți crea noi variabile cu ajutorul comenzii RECODE
adăugând INTO NEWVAR
. Vedeți următoarele exemple.
RECODIFICĂ famimpor (1,2 =1) (3,4 = 2) INTO famimpod.
Acest lucru creează o variabilă dihotomică cu punct de tăiere între 2 și 3. Cu toate acestea, vechea variabilă rămâne intactă, iar variabila dihotomică este adăugată la setul de date cu numele famimpod (cu „D” indicând că aveți o variabilă dihotomică. Eu folosesc astfel de dispozitive memotehnice destul de frecvent, dar, bineînțeles, nu trebuie să o faceți și dvs.)
Rețineți, totuși, că trebuie să luați anumite precauții atunci când ÎNREGISTRĂM o nouă variabilă. În acest caz, trebuie să vă asigurați că noua variabilă are toate valorile valide pe care doriți să le aibă. Dacă comanda RECODE
numește doar o parte din valori, toate celelalte valori vor fi tratate ca valori lipsă din sistem. Cu toate acestea, există o modalitate ușoară de a rezolva această problemă.
Este greșit: RECODE famimpor (4=3) INTO famimpon.
Aceasta ar schimba toate aparițiile valorii 4 în valoarea 3. Cu toate acestea, toate celelalte valori ar fi tratate ca fiind lipsă în sistem. Iată o modalitate mai bună:
RECODIFICĂ famimpor (4=3) (ELSE=COPY) INTO famimpon.
Acest lucru schimbă toate aparițiile valorii 4 în valoarea 3, iar toate celelalte valori sunt copiate în noua variabilă. Desigur, puteți face oricâte recodificări explicite doriți și apoi să vă ocupați de restul prin ELSE=COPY.
Partea ELSE a comenzii RECODE nu se limitează la cazul „COPY” tocmai explicat. O puteți utiliza, de asemenea, cu valori explicite, ca în exemplul următor:
RECODE famimpor (4,3=2) (ELSE=1) INTO famimpor.
O problemă cu RECODE INTO, totuși, este că etichetele variabilelor și valorilor nu sunt create automat (cum ar trebui să fie?). Așa că nu uitați să etichetați noua variabilă.
Mai multe variabile
pot fi abordate într-o singură instrucțiune RECODE
, cu condiția ca toate variabilele să fie afectate în același mod, ca în exemplul următor.
RECODE famimpor workimpo chldimpo (4,3=2) (ELSE=1).
Dar, dacă doriți să RECODE
aceste variabile INTO noi variabile, pentru fiecare variabilă este necesară o linie de comandă separată RECODE
.
Tratarea valorilor lipsă
Valorile lipsă pot fi abordate prin intermediul cuvintelor cheie „sysmis” sau „missing”.
Să presupunem că, pe lângă valorile de la 1 la 4, există și valorile 8 și 9 care sunt definite ca valori lipsă. Iată câteva exemple și ceea ce fac acestea.
RECODE famimpor (missing = 8).
Toate valorile lipsă (adică valorile 8 și 9 și poate și valorile lipsă din sistem) vor avea valoarea 8. 8 va fi definit în continuare ca fiind lipsă.
RECODE famimpor (missing = 7).
Toate valorile lipsă (adică valorile 8 și 9 și poate și valorile lipsă din sistem) vor avea valoarea 7. 7 nu va fi definit ca fiind lipsă!
Dacă aveți valori lipsă de sistem și doriți să le recodificați doar pe acestea la o altă valoare, puteți utiliza cuvântul cheie „sysmis” în loc de „missing”.
RECODE famimpor (sysmis = 7).
Din nou, dacă ați definit valorile 8 și 9 ca fiind lipsă, 7 nu va fi recunoscută ca valoare (anterior) lipsă. Este posibil să doriți fie să definiți acum 7 ca lipsă, fie să atribuiți o etichetă de valoare care să vă spună semnificația lui 7.
Simplificări
De multe ori, trebuie abordate mai multe valori ale unei variabile. Câteva cuvinte cheie ajută la ușurarea acestui proces.
RECODE famimpor (de la cea mai mică până la 3 = 3).
RECODE famimpor (de la 2 până la cea mai mare = 2).
Prima comandă recodifică toate valorile de la cea mai mică valoare până la (și inclusiv) valoarea 3 în valoarea 3. A doua comandă recodifică toate valorile de la valoarea 2 până la (și inclusiv) cea mai mare valoare în valoarea 2. Rețineți că „cel mai mic” poate fi prescurtat ca „lo” și „cel mai mare” ca „hi”. ATENȚIE: Presupunând că 8 și 9 sunt încă definite ca valori lipsă de utilizator, acestea vor fi recodificate în 2 în ultimul exemplu (și, bineînțeles, nu vor mai fi definite ca fiind lipsă).
.