Dit is een site voor studenten van de Open Universiteit. Voordat je een vraag kunt stellen moet je even een account aanmaken (dit systeem is niet gekoppeld aan je OU studentnummer en wachtwoord).

Welkom bij het vraag- en antwoord systeem van de onderzoeks-practica van de studie psychologie bij de Open Universiteit.

Houd er, als je een vraag stelt, rekening mee dat je de richtlijnen volgt!

0 leuk 0 niet-leuks

Bij opdracht 1.2.4 wordt gevraagd om een subschaal te maken met de volgende syntax:

COMPUTE @ASQ_vertrouwen= mean.5(ASQ_1,ASQ_2,ASQ_3,ASQ_19,ASQ_31, ASQ_33_R,ASQ_37,ASQ_38).

Wat is het equivalent hiervan in R?

Ik heb het volgende geprobeerd, maar vraag me af of het correct is? En hoe ga je dan om met items die omgekeerd gescoord zijn?

dat\$VertrouwenVar <- c(dat\$ASQ_1_nummer,
                       dat\$ASQ_2_nummer,
                       dat\$ASQ_3_nummer,
                       dat\$ASQ_19_nummer,
                       dat\$ASQ_31_nummer,
                       dat\$ASQ_33_nummer,
                       dat\$ASQ_37_nummer,
                       dat\$ASQ_38_nummer)

in Cross-sectioneel Onderzoek (OCO, PB08x2) door (760 punten)

1 Antwoord

0 leuk 0 niet-leuks

Bijna goed.

Ik zal eerst uitleggen wat je in jouw voorbeeld doet.

De "c()" functie combineert elementen tot een vector. Met de "dollartekenoperator" (dus, "$") selecteer je een "sub-object" uit een object.

Dus, je selecteert de variabelen ("ASQ_1_nummer", ...) uit het dataframe dat "dat" heet. Dat dataframe is een object dat uit een combinatie andere objecten (sub-objecten) bestaat. Dataframes kunnen als sub-objecten alleen vectoren bevatten, en die moeten bovendien allemaal even lang zijn. Een vector is een combinatie van een of meerdere waarden.

Oftewel: een datapunt is een waarde; een vector is een dataserie; en een dataframe is een combinatie dataseries. Omdat die vectoren die samen het dataframe vormen (dus, die dataseries) allemaal even lang moeten zijn, is een dataframe noodzakelijkerwijs altijd rechthoekig. Elke vector is een kolom in het dataframe; en de rijen vormen meestal deelnemers.

Wat jouw commando doet, is acht vectoren uit je dataframe pakken en die achter elkaar plakken in een superlange vector.

Wat je wil is de vectoren middelen. Hiervoor zijn allerlei manieren; ik gebruik nu de "rowMeans()" functie:

dat$VertrouwenVar <- rowMeans(dat[, c('ASQ_1_nummer',
                                       'ASQ_2_nummer',
                                        'ASQ_3_nummer',
                                        'ASQ_19_nummer',
                                        'ASQ_31_nummer',
                                       'ASQ_33_nummer',
                                        'ASQ_37_nummer',
                                      'ASQ_38_nummer')])

Hier worden de rechte haken gebruikt om de kolommen waarin je bent geinteresseerd uit het dataframe te pakken. Dat 'kleinere dataframe' geven we vervolgens mee aan de "rowMeans()" functie, die per regel het gemiddelde berekent.

Je kunt in R ook de "paste0()" functie gebruiken om dit wat efficienter te specificeren:

dat$VertrouwenVar <-
  rowMeans(dat[, paste0('ASQ_',
                        c(1, 2, 3, 19, 31, 33, 37, 38),
                        '_nummer')])

door (77.8k punten)

Items die omgekeerd gescoord zijn moet je trouwens, net als in SPSS, eerst omcoderen. De makkelijkste manier is om elke score af te trekken van de maximale schaalwaarde + 1. Dus bij een schaal van 1-5, trek je alles af van 6:

dat$variable_recoded <-
  6 - dat$variable_raw;

Of zoiets.

...