RECODE

Kommandot RECODE används för att ändra några eller alla värden för en variabel. De nya värdena kan lagras i samma variabel eller i en ny variabel.

Enkel exempel:

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

Mer komplext exempel:

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

Allmänt

Antag att vi har variabeln famimpor med värdena 1, 2, 3 och 4, som mäter hur viktigt det är för respondenten att ha en familj.

RECODE famimpor (4=3).

Detta ändrar alla förekomster av värdet 4 till värdet 3. Det ursprungliga värdet 3 förblir oförändrat. (Om du har värdeetiketter bör du kanske ändra dessa nu i enlighet med detta). Alla andra värden förblir också oförändrade.

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

Detta skapar en dikotom variabel med en brytpunkt mellan 2 och 3.

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

Detta vänder på ordningen mellan värdena. Observera att detta kan uppnås enklare med kommandot COMPUTECOMPUTE famimpor = 5 - famimpor.). Detta kan vara till hjälp om det finns många kategorier.

Skapa nya variabler

Ett problem är att alla ovanstående exempel ändrar variabelns ursprungliga värden. Du bör endast göra det om du antingen kan rekonstruera de ursprungliga värdena från de nya (detta skulle endast vara möjligt i det sista exemplet!) eller om du är helt säker på att du har en giltig kopia av din datamängd någon annanstans. Lyckligtvis kan du skapa nya variabler med kommandot RECODE genom att lägga till INTO NEWVAR. Se följande exempel:

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

Detta skapar en dikotom variabel med en brytpunkt mellan 2 och 3. Den gamla variabeln förblir dock intakt och den dikotoma variabeln läggs till i datamängden med namnet famimpod (med ”D” som anger att du har en dikotom variabel). Jag använder sådana memotekniska anordningar ganska ofta, men det behöver du naturligtvis inte göra.)

Bemärk dock att du måste vidta vissa försiktighetsåtgärder när du registrerar i en ny variabel. I det här fallet måste du vara säker på att den nya variabeln har alla giltiga värden som du vill att den ska ha. Om kommandot RECODE endast namnger en del av värdena kommer alla andra värden att behandlas som systemets saknade värden. Ändå finns det ett enkelt sätt att hantera detta problem.

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

Detta skulle ändra alla förekomster av värde 4 till värde 3. Alla andra värden skulle dock behandlas som om de saknades i systemet. Här är det bättre sättet:

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

Detta ändrar alla förekomster av värde 4 till värde 3, och alla andra värden kopieras till den nya variabeln. Du kan naturligtvis göra så många explicita omkodningar som du vill och sedan hantera resten via ELSE=COPY.

Den ELSE-del som ingår i RECODE-kommandot är inte begränsad till ”COPY”-fallet som just förklarats. Du kan också använda den med explicita värden, som i följande exempel:

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

Ett problem med RECODE INTO är dock att etiketter för variabler och värden inte skapas automatiskt (hur skulle de kunna det?). Glöm därför inte att märka den nya variabeln.

Flera variabler

kan behandlas i ett RECODE-uttalande, förutsatt att alla variabler ska påverkas på samma sätt, som i följande exempel.

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

Om du emellertid vill RECODE dessa variabler INTO nya variabler, krävs för varje variabel en separat RECODE kommandorad.

Behandling av saknade värden

Som saknade värden kan man använda nyckelorden ”sysmis” eller ”missing”.

Antag att det förutom värdena 1 till 4 även finns värden 8 och 9 som definieras som saknade värden. Här är några exempel och vad de gör.

RECODE famimpor (missing = 8).

Alla saknade värden (dvs. värden 8 och 9 och kanske även systemets saknade värden) kommer att ha värdet 8. 8 kommer fortfarande att definieras som saknad.

RECODE famimpor (missing = 7).

Alla saknade värden (dvs. värden 8 och 9 och kanske även systemets saknade värden) kommer att ha värdet 7. 7 kommer inte att definieras som saknad!

Om du har värden som saknas i systemet och vill omkoda endast dessa till ett annat värde kan du använda nyckelordet ”sysmis” i stället för ”missing”.

RECODE famimpor (sysmis = 7).

Också om du har definierat värdena 8 och 9 som saknade, kommer 7 inte att erkännas som ett (tidigare) saknat värde. Du kanske vill antingen definiera 7 nu som saknad eller tilldela en värdeetikett som talar om innebörden av 7.

Simplifieringar

Ofta måste flera värden för en variabel behandlas. Några nyckelord hjälper till att underlätta denna process.

RECODE famimpor (lowest thru 3 = 3).
RECODE famimpor (2 thru highest = 2).

Det första kommandot kodar om alla värden från det lägsta värdet till (och inklusive) värde 3 till värdet 3. Det andra kommandot kodar om alla värden från värdet 2 till (och med) det högsta värdet till värdet 2. Observera att ”lägsta” kan förkortas med ”lo” och ”högsta” med ”hi”. FÖRSIKTIGHET: Om vi antar att 8 och 9 fortfarande är definierade som ”user missing values” kommer dessa att kodas om till 2 i det sista exemplet (och naturligtvis inte längre definieras som ”missing values”).

Lämna ett svar

Din e-postadress kommer inte publiceras.