Läsarfråga: Kombinera två variabler

Q: Det är så att jag har två olika ”grupp” variabler. En heter ”Grupp” och består av 1= neuro, 2=kontroll & sedan ”Kön” 1=flicka , 2=pojke. Jag undrar hur man gör för att skapa en ny variabel, vi kan kalla den för X där man slår ihop dessa två variabler så det blir en variabel med fyra grupper (1=neuro_pojke, 2=kontroll_pojke, 3=neuro_flicka, 4=kontroll_flicka).

A: Mig veterligen finns det inget automatiskt kommando för det, utan jag skulle istället föreslå att du kodar om din könsvariabel så att pojke = 1 och flicka = 3, och sedan gruppvariabeln så att neuro = 0 och kontroll = 1.

Därefter går du in på ”Transform –> Compute” och skriver in ”variabelx” (utan citationstecken) i rutan target variable. I rutan där du ska skriva in formeln för din nya variabel skriver du helt enkelt:

grupp + kön

är man då:
neuro och pojke får man 0 + 1 = 1
kontroll och pojke får man 1 + 1 = 2
neuro och flicka får man 0 + 3 = 3
kontroll och flicka får man 1 + 3 = 4

Du har nu en ny variabel, ”variabelx”, med fyra värden.

Om det är någon som vet ett bättre (enklare) sätt: skriv en kommentar!

13 thoughts on “Läsarfråga: Kombinera två variabler

  1. I vår studie tittar vi på födslar som ‘repeated measures’ för varje mamma. Vi behöver därför ha vår data i ‘Long format’ med flera födslar per mamma, där mamma är vårt ‘subject’. En effekt vi är intresserade av är om mamman tidigare fött en son eller inte, eftersom vi tror att om hon inte tidigare fött en son har en effekt på efterföljande födslar. Jag försöker alltså skapa en dikotom variabel med värdet 1 om mamman inte fött en son tidigare och värdet 0 om hon redan har en son. Vi har tre andra variabler med hjälp av vilka vi vill skapa vår dikotoma ‘ingen tidigare son’ variabel; Subject ID (som alltså har samma värde för alla födslar till samma mamma, dvs. 1, 1, 1, 1, och 2,2,2,2 o.s.v), samt barns ålder och barns kön. För en kvinna med fyra barn, varav de två första var döttrar, men det tredje och det fjärde en son, vill vi alltså att den första födselns värde för ‘ingen tidigare son’ är 1, för den andra födseln även den 1 och likaså att den tredje födseln tilldelas värdet 1, men att den fjärde födseln tilldelas värdet 0. Hur kan jag skapa denna ‘ingen tidigare son’ variabel?

    • Hej Mattias!
      Det var en klurig fråga.

      Så här skulle jag göra.
      1. Gå in på ”Data->Split file” och säg att du vill ”Organize output by groups”. Variabeln du ska använda här är ”Subject ID”.
      2. Se med hjälp av ”Data->Sort” till att analysenheterna är ordnade i ordning så att alla födslar av samma mamma ligger tillsammans, med den första födseln först.
      3. Gör, om du inte har det redan, en variabel som är 1 om barnet är en son och 0 om det är en flicka.
      4. Gå in på ”Transform->Shift values”. Du väljer där att son-variabeln ska skiftas, och du ska ”get value from earlier case”, den ska skiftas ett steg. Tryck ok.

      Du ska nu ha fått en ny variabel, som är 1 om den förra födseln var en son, och 0 om det var en flicka.

      5. Upprepa steg 4 så många gånger som det maximala antalet barn från samma mamma, minus ett, fast öka antalet steg du skiftar son-variabeln med med ett hela tiden. Så att du får variabler som är skiftade ett, två, tre steg osv. Om det till exempel finns mammor som har sju barn behöver du göra steg 4 sex gånger.

      6. Säg att du har gjort steg 4 fem gånger. Du ska nu ha fem variabler, där den första är son-variabeln förskjuten ett steg, den andra variabeln är förskjuten två steg, osv. Gå nu in på ”Transform->Recode into same variables”. Ersätt där ”SYSTEM MISSING” med värdet 0 för alla de nya variablerna.

      7. Gå in på ”transform->compute” och gör en ny variabel som är summan av alla de nya variablerna.

      8. Den ny variabeln kommer nu ha ett värde som indikerar hur många söner mamman hade fått innan det aktuella barnet föddes.

      9. Du kan nu med ”Transform->Recode into new variable” skapa en ny variabel som har värdet 0 om summeringsvariabeln har värdet 1 eller mer, och 1 om summeringsvariabeln har värdet 0 (ingen son sedan tidigare). Färdigt!

      10. Du kan nu stänga av ”Split file”.

      Rätt krångligt, men det borde funka!

      /Anders

    • Varje rad svarar mot ett barn. Frågan gäller alltså om det aktuella barnet har en
      äldre broder.
      Först beräknas en variabel med kumulativt antal söner i familjen.
      Sedan kontrolleras att
      * Inga första barn kan ha en äldre broder
      * Är det en flicka och det finns minst 1 son måste det vara en äldre broder
      * Är det en pojke och det finns minst 2 söner måste den andre vara en äldre broder
      Sammanlagt 2 variabler beräknas, se exempel nedan. Kom ihåg att en logisk jämförelse
      (t.ex. A=B) ger svaret 1 (SANT) eller 0 (FALSKT).
      Nedan finns exempel i SPSS syntax

      NEW FILE .
      DATA LIST FREE / SubjectID ChildNr ChSex .
      BEGIN DATA
      1 1 0
      1 2 0
      1 3 0
      2 1 0
      2 2 0
      2 3 1
      3 1 0
      3 2 1
      3 3 0
      4 1 0
      4 2 1
      4 3 1
      5 1 1
      5 2 0
      5 3 0
      6 1 1
      6 2 0
      6 3 1
      7 1 1
      7 2 1
      7 3 0
      8 1 1
      8 2 1
      8 3 1
      9 1 0
      9 2 0
      10 1 0
      10 2 1
      11 1 1
      11 2 0
      12 1 1
      12 2 1
      13 1 0
      14 1 1
      END DATA .
      VALUE LABELS
      ChSex 0 ‘Girl’ 1 ‘Boy’ .

      /* Kumulativt antal söner i familjen; nollställ om ny familj */.
      COMPUTE Sons = SUM((ChSex=1), LAG(Sons)*(LAG(SubjectID)=SubjectID)) .
      /* Äldsta barnet kan inte någon storebror, ej heller första pojken, men fösta flickan kan */.
      COMPUTE HasBigBrother = (ChildNr>1) AND ((ChSex=0) AND (Sons>0)) OR ((ChSex=1) AND (Sons>1)) .
      EXECUTE .

      VALUE LABELS
      HasBigBrother 0 ‘No’ 1 ‘Yes’ .

      LIST .

      • Oops! Glömde att notera att data skall vara sorterat stigande på SubjectID och ChildNr:

        SORT CASES BY SubjectID(A) ChildNr(A).

  2. Hej, jag har också en fråga om att kombinera två indexen, däremot det svaret som finns längs upp funkar inte riktigt på mina variabler. Jag har två index, ”psykisk press”, med svarsalternativ: 1= beslut och ej krav, 2= övrigt och 3= ej beslut men krav. Och andra index ”psykisk aktivitet” som består av 1=ej beslut och ej krav, 2 =övrigt och 3= både beslut och krav. Jag undrar hur man skapar en ny variabel, där man slår ihop de två index, kan kallas den för ”psykosociala förhållanden” som innehåller fyra svarsalternativ, där 1.beslut och ej krav=avspänt arbete, 3.ej beslut men krav=spänt arbete, 1.ej beslut och ej krav=passivt arbete, 3.både beslut och krav= aktivt arbete.

    • Om det är samma ‘Beslut’ och ‘Krav’ som avses i Psykisk Press (PP) och Psykisk Aktivitet (PA) så ser det ut så här:
      PP Beslut
      Ja Nej
      Krav Nej 1
      Ja 3

      PA Beslut
      Ja Nej
      Krav Nej 1
      Ja 3

      och då får man nog ihop fyra kategorier till Psykosoc Förhållanden (PF). Om de båda indexen PP och PA är oberoende finns det kanske minst 9 kategorier…

      PP 1 2 3
      ————————–
      PA 1 | PF1 ? PF3 |
      — + +
      2 | ? ? ? |
      — + +
      3 | PF2 ? PF4 |
      ————————–

      Ett utkast:
      *== SPSS SYNTAX START ===*.
      COMPUTE PF = 1 * (PP=1) + /* PP=PsykiskPress, PA=PsykiskAktivitet */
      2 * (PP=3) +
      3 * (PA=1) +
      4 * (PA=3) .

      VARIABLE LABELS
      PF ‘Psykosociala Förhållanden’ .

      VALUE LABELS
      PF 1 ‘beslut och ej krav=avspänt arbete’
      2 ‘ej beslut men krav=spänt arbete’
      3 ‘ej beslut och ej krav=passivt arbete’
      4 ‘både beslut och krav= aktivt arbete’ .

      EXECUTE .
      *== SPSS SYNTAX STOPP ===*.

  3. Kombinera två variabler.

    X = (Grupp + 2*Kön)-2
    neuro_flicka, 1 + 2* 1 -2 1
    kontroll_flicka 2 + 2* 1 -2 2
    neuro_pojke, 1 + 2* 2 -2 3
    kontroll_pojke, 2 + 2* 2 -2 4

    Eftersom flicka=1 och pojke=2 kommer damerna först, men man slipper omkodning.

    *== SPSS SYNTAX =======================================================*.
    COMPUTE VarX = (Grupp + 2*Kön)-2 .
    VARIABLE LABELS
    VarX ‘Gruppering’ .

    VALUE LABELS
    VarX 1 ‘Neuro, Flicka’
    2 ‘Kontroll, Flicka’
    3 ‘Neuro, Pojke’
    4 ‘Kontroll, Pojke’ .

    EXECUTE .
    *======================================================================*.

  4. En generell fråga, vad är praxis att göra när en respondent kryssat i två eller fler alternativ trots att endast ett kryss var tillåtet? Detta står det tyvärr inget om i metodböckerna…

    /Jenny

    • Hej Jenny,
      det beror lite på. Det säkraste är ju att räkna det som inget svar.
      Är det en nominalskala så är det inget att göra. Har man t ex kryssat i både äpple och päron så vet vi ju inte vilket personen föredrar.
      Om det däremot är en intervallskala så kan man kanske ta medelvärdet av de två värdena.

      Men det ”säkraste” är nog att betrakta det som ett uteblivet svar.

      /Anders

      • Ja, det är ju inte möjligt att ta medelvärdet på en ordinalskala, så det låter rimligast.

        /Anders

  5. Slå ihop grupperna ”Svensk medborgare, men ej sedan födseln” och ”Utländsk medborgare” till en grupp (variabel 111). Undersök sedan om det föreligger en statistiskt signifikant skillnad mellan denna grupp och gruppen ”Svensk medborgare sedan födseln” när det gäller att tillhöra en kyrka eller religiös församling (variabel 104). Motivera valet av testmetod och dra en slutsats utifrån testresultatet.

    Hur ska jag göra för att slå ihop grupperna?

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s