Het RECODE
commando wordt gebruikt om enkele of alle waarden van een variabele te veranderen. De nieuwe waarden kunnen worden opgeslagen in dezelfde variabele of in een nieuwe.
Eenvoudig voorbeeld:
RECODE var1 var2 (1,2 = 1) (3,4 = 2).
Een complexer voorbeeld:
RECODE var1 (1,2 = 1) (3 thru 8 = 2) (missing = 99) (else = copy)
INTO var1new.
Algemeen
Vergonderstel dat we variabele famimpor hebben met waarden 1, 2, 3 en 4, die meten hoe belangrijk het hebben van een gezin is voor de respondent.
RECODE famimpor (4=3).
Dit verandert alle keren dat de waarde 4 voorkomt in waarde 3. De oorspronkelijke waarde 3 blijft ongewijzigd. (Als u waarde-etiketten hebt, moet u deze nu misschien dienovereenkomstig wijzigen). Alle andere waarden blijven ook ongewijzigd.
RECODE famimpor (1,2 =1) (3,4 = 2).
Dit creëert een dichotome variabele met een afkappunt tussen 2 en 3.
RECODE famimpor (1=4) (2=3) (3=2) (4=1).
Dit keert de volgorde van de waarden om. Merk op dat dit eenvoudiger kan worden bereikt met het COMPUTE
commando (COMPUTE famimpor = 5 - famimpor.
). Dit kan handig zijn als er veel categorieën zijn.
Nieuwe variabelen maken
Eén probleem is dat alle bovenstaande voorbeelden de oorspronkelijke waarden van de variabele veranderen. Dat moet je alleen doen als je de oorspronkelijke waarden kunt reconstrueren uit de nieuwe waarden (dat kan alleen in het laatste voorbeeld!) of als je er verdomd zeker van bent dat je elders een geldige kopie van je gegevensverzameling hebt. Gelukkig kunt u nieuwe variabelen maken met het RECODE
commando door INTO NEWVAR
toe te voegen. Zie de volgende voorbeelden.
RECODE famimpor (1,2 =1) (3,4 = 2) INTO famimpod.
Dit creëert een dichotome variabele met een afkappunt tussen 2 en 3. De oude variabele blijft echter intact en de dichotome variabele wordt toegevoegd aan de gegevensverzameling met de naam famimpod (waarbij “D” aangeeft dat je een dichotome variabele hebt. Ik gebruik dergelijke geheugensteuntjes vrij vaak, maar dat hoeft natuurlijk niet.)
Merk echter op dat u enkele voorzorgsmaatregelen moet nemen wanneer u een nieuwe variabele OPNAMEERT. In dit geval moet je er zeker van zijn dat de nieuwe variabele alle geldige waarden heeft die je wilt dat hij heeft. Indien het RECODE
commando slechts een deel van de waarden benoemt, zullen alle andere waarden worden behandeld als systeem ontbrekende waarden. Toch is er een eenvoudige manier om met dit probleem om te gaan.
WRONG: RECODE famimpor (4=3) INTO famimpon.
Dit zou alle occurrences van waarde 4 veranderen in waarde 3. Echter, alle andere waarden zouden worden behandeld als systeem ontbrekend. Hier is de betere manier:
RECODE famimpor (4=3) (ELSE=COPY) INTO famimpon.
Dit verandert alle occurrences van waarde 4 in waarde 3, en alle andere waarden worden gekopieerd naar de nieuwe variabele. U kunt natuurlijk zoveel expliciete hercoderingen maken als u wilt en de rest via ELSE=COPY afhandelen.
Het ELSE-deel van het RECODE-commando is niet beperkt tot het zojuist toegelichte geval “COPY”. Je kunt het ook gebruiken met expliciete waarden, zoals in het volgende voorbeeld:
RECODE famimpor (4,3=2) (ELSE=1) INTO famimpor.
Een probleem met RECODE INTO is echter dat variabele- en waarde-labels niet automatisch worden aangemaakt (hoe zou dat ook moeten?). Vergeet dus niet de nieuwe variabele te labelen.
Verschillende variabelen
kunnen in één RECODE
statement worden aangesproken, mits alle variabelen op dezelfde manier moeten worden beïnvloed, zoals in het volgende voorbeeld.
RECODE famimpor workimpo chldimpo (4,3=2) (ELSE=1).
Wilt u echter RECODE
deze variabelen INTO nieuwe variabelen, dan is voor elke variabele een aparte RECODE
commandoregel nodig.
Behandeling van ontbrekende waarden
Missende waarden kunnen worden aangepakt via de trefwoorden “sysmis” of “missing”.
Veronderstel dat er naast de waarden 1 t/m 4 ook waarden 8 en 9 zijn die als missende waarden zijn gedefinieerd. Hier volgen een paar voorbeelden en wat ze doen.
RECODE famimpor (missing = 8).
Alle ontbrekende waarden (d.w.z. de waarden 8 en 9 en misschien ook de ontbrekende waarden van het systeem) krijgen de waarde 8. 8 zal nog steeds als ontbrekend worden gedefinieerd.
RECODE famimpor (ontbrekend = 7).
Alle ontbrekende waarden (d.w.z. de waarden 8 en 9 en misschien ook ontbrekende waarden van het systeem) zullen de waarde 7 krijgen. 7 wordt niet als ontbrekend gedefinieerd!
Als u systeemontbrekende waarden hebt en alleen deze naar een andere waarde wilt hercoderen, kunt u het trefwoord “sysmis” gebruiken in plaats van “missing”.
RECODE famimpor (sysmis = 7).
Wederom, als u de waarden 8 en 9 als ontbrekend hebt gedefinieerd, zal 7 niet als een (voorheen) ontbrekende waarde worden herkend. Misschien wilt u 7 nu als missing definiëren of een waarde-etiket toekennen dat u de betekenis van 7 vertelt.
Vereenvoudigingen
Vaak moeten meerdere waarden van een variabele worden aangepakt. Enkele trefwoorden helpen om dit proces te vergemakkelijken.
RECODE famimpor (lowest thru 3 = 3).
RECODE famimpor (2 thru highest = 2).
Het eerste commando codeert alle waarden van de laagste waarde tot (en met) waarde 3 naar de waarde 3. Het tweede commando codeert alle waarden vanaf de waarde 2 tot (en met) de hoogste waarde naar de waarde 2. Merk op dat “laagste” kan worden afgekort als “lo” en “hoogste” als “hi”. LET OP: Ervan uitgaande dat 8 en 9 nog steeds gedefinieerd zijn als ontbrekende waarden van de gebruiker, zullen deze in het laatste voorbeeld gehercodeerd worden naar 2 (en natuurlijk niet meer gedefinieerd worden als ontbrekend).