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!

Hoe krijg ik data van SPSS in R?

0 leuk 0 niet-leuks
Ik weet niet hoe ik mijn SPSS datafile (met de .sav extentie) in R krijg. Moet ik de data dan op een aparte manier exporteren vanuit SPSS?
gevraagd 11 december 2012 in Anders door Gjalt-Jorn Peters (36,980 punten)

1 Antwoord

0 leuk 0 niet-leuks

[START UPDATE]

In het package userfriendlyscience zit de functie getData(), die het nog weer makkelijker maakt om een datafile in te lezen. Je kunt deze simpelweg aanroepen met getData(), waarna er een dialoogje opent om je bestand te zoeken op je harde schijf. Dus bijvoorbeeld:

require('userfriendlyscience');
dat <- getData();

Als je variabelen in SPSS hebt waarvoor je labels hebt ingesteld, maar die eigenlijk interval-niveau hebben, gebruik dan use.value.labels=FALSE, dus:

dat <- getData(use.value.labels=FALSE);

[EINDE UPDATE]

Om data van SPSS in R (zie hier voor meer informatie over R) te importeren hoef je niets bijzonders te doen in SPSS. Je kunt je datafile simpelweg importeren met het commando read.spss. Dit commando zit in het package foreign, dat je dus eerst moet laden. Je kunt een package laden met 'require', dus eerst doe je:

require('foreign');

Het zou kunnen dat het package foreign nog niet is geinstalleerd. Dit kun je installeren in R met dit commando:

### The foreign package can read SPSS files
if (!is.element("foreign", installed.packages()[,1])) {
  install.packages("foreign");
}

Hierna is het beschikaar om te laden. Als je het hebt geladen met require doe je:

dat <- read.spss("databestand.sav", to.data.frame=TRUE);

(maar, belangrijk: soms moet je een andere methode gebruiken, lees door!)

Zorg dat je in plaats van "databestand.sav" natuurlijk de naam van jouw databestand ingeeft. Als je databestand niet in je working directory staat, moet je de lokatie ook aangeven, dus dan wordt het bijvoorbeeld:

dat <- read.spss("C:/Users/Gjalt-Jorn/Desktop/databestand.sav", to.data.frame=TRUE);

(in R moet je slashes gebruiken, in plaats van backslashes, als je paden opgeeft)

Je kunt ook gewoon je working directory aanpassen, dan hoef je die niet steeds te specificeren. Dit kan met:

setwd("C:/Users/Gjalt-Jorn/Desktop/");

In R worden ordinale en nominale variabelen als 'factors' opgeslagen in je dataframe. Dit omdat je deze variabelen natuurlijk heel anders moet behandelen, en R kan daar op deze manier makkelijk rekening mee houden. Als je niet wil dat R je variabelen omzet in factoren, kun je dat aangeven met use.value.labels:

dat <- read.spss("databestand.sav", use.value.labels=FALSE, to.data.frame=TRUE);

Op deze manier worden variabelen die in SPSS labels hebben, niet automatisch omgezet in factoren in R. Je kunt ook alleen variabelen met labels met een beperkt aantal categorieen laten omzetten in factoren, met max.value.labels:

dat <- read.spss("databestand.sav", max.value.labels=8, to.data.frame=TRUE);

Nu worden alleen variabelen met labels die 8 niveau's of minder hebben, omgezet in factoren.

Houdt er overigens rekening mee dat als je bijvoorbeeld een t-toets of een anova wilt uitvoeren in R, de variabele die de groepen definieert wel een factor moet zijn!

beantwoord 11 december 2012 door Gjalt-Jorn Peters (36,980 punten)
bewerkt 11 mei 2015 door Gjalt-Jorn Peters
...