home   Cursusoverzicht   Wat is belfactorij?   Aanmelden   Administrator

les 0
les 1, het begin
2.1 inlezen
2.2 vectoren
2.3 matrices
2.4 bewaren
2.5 samenvatting
les 3, figuren

 

Les 2. Inlezen, bewerken en bewaren

 

 

2.1 een simpel overzicht

 

Ik begin deze les met een simpel overzicht. Degene die alleen de basisprincipes willen weten van het inlezen of laden van data en het bewaren van data hebben in eerste instantie genoeg aan deze les 2.1, en kunnen dan door naar les 3. Degene die iets meer willen weten raad ik aan, ook de verder lessen 2 te lezen.

 

c

Voor het inlezen van kleine hoeveelheden gegevens is de functie “c” (van het Engelse “combine”) die we al eerder zagen het handigst

 

> y <- c(2,5,1,0,3)

> y

[1] 2  5  0  3

 

Heb je nu een fout gemaakt door bijvoorbeeld een komma te typen tussen 1 en 0 terwijl je eigenlijk 10 wou typen, dan hoef je niet alles weer over te typen, Gebruik het pijltje ↑ om het laatste getypte commando te voorschijn te toveren. Met behulp van de andere pijltjes om door het commando te bewegen en de rest van het toetsenbord (in dit geval alleen de “del” knop) kun je je fout verbeteren. Probeer het maar eens.

 

> y <- c(2,5,10,3)

> y

[1] 2  5  10  3

 

scan
De functie
scan kan hetzelfde als c:

 

> y <- scan()

> 2 5 10 3

[1] 2  5  10  3

 

Na ייn keer op "enter" drukken begin je een nieuwe rij. na twee keer achter elkaar op "enter" drukken stopt het inlezen. Deze functie is ook heel goed te gebruiken samen met "copy" (van bijvoorbeeld een kolom met gegevens uit Excel of Notepad) en "paste" (naar R). Daarnaast kan de functie scan een file inlezen, bijvoorbeeld met de naam "gegevens.txt" .

 

> y <- scan(file="gegevens.txt")

 

Let bij wel op dat “gegevens.txt” in de default working directory moet staan. Welke dat is kun je te weten komen met

 

> getwd( )

 

A anders moet je tussen haakjes ook nog het pad aangeven waar “gegevens.txt” te vinden is. Met behulp van (bijvoorbeeld)

 

> setwd("C:/data")

 

Kun je ook de default directory veranderen (naar in dit geval C:/data).

 

read.table

Voor het inlezen van een file kun je ook read.table gebruiken.

 

> y <- read.table(file="gegevens.txt")

 

Ook hier geldt weer dat "gegevens.txt" in de default working directory moet staan. Anders moet je het pad toevoegen of  de default directory veranderen.

 

read.table maakt default een dataframe aan (terwijl scan default een numerieke vector aanmaakt). De variabelen binnengehaald met read.table hebben (tenzij je ze anders hebt genoemd) default namen V1, V2, V3,…enzovoort. Deze kunnen aangeroepen worden met X$V1, X$V2, ...of X[“V1”], X[“V2”],…of X[,1], X[,2],....als je filenaam X.txt is.

 

Achter de filenaam kun je tussen de haakjes, gescheiden door comma’s, nog allerlei commando’s zetten in de read.table. Hier een overzicht van de meest gebruikte:

 

header

= T or F; True or False geeft aan op de file al of niet variabele namen op de eerste regel heeft staan.

sep

Geeft aan of en zo ja wat voor scheidingsteken tussen de waarden wordt gebruikt. Bijvoorbeeld sep=”\t” als er een tab is gebruikt.

quote

Geeft aan welk symbool is gebruikt voor character variabelen

dec

Geeft aan welk symbool is gebruikt voor de decimale punt.

row.names

Een vector met de namen van de rijen

col.names

Een vector met de namen van de variabelen

as.is

= T or F; Houdt de waarde van characters als characters respectievelijk zet deze om naar numerieke factoren.

na.string

Geeft aan welke term is gebruikt voor een missende waarde. Dit wordt dan geconverteerd naar NA.

nrows

Maximum aantal rijen

skip

Geeft aan welke regels eerst overgeslagen moeten worden bij het inlezen van de data

blank.lines.skip

= T or F. Slaat lege regels over bij T.

comment.char

Geeft aan met welk symbool gebruikt wordt aan het begin van regels die mogen worden over geslagen (omdat ze alleen commentaar bevatten). 

 

scan is eigenlijk iets flexibeler dan read.table omdat je daarmee direct de “mode” van de variabelen kunt invoeren als volgt.

 

>X = scan(file = “gegevens.txt”, what = list (“”, 0, 0))

 

Hier staat dat “gegevens.txt uit 3 variabelen bestaat met eerst een character dan twee numerieke modes. Verder geldt hetzelfde lijstje als hierboven, met nog een aantal extras (zie ...blz 12?).

 

read.fwf

Het volgende commando is voor het inlezen van bestanden van een vast formaat.

 

>X = read.fwf(file = “hulp.txt”, widths=c(1, 4, 3))

 

Hierbij geeft widths aan dat de eerste variabele 1 karakter breed is, de tweede 4 en de derde 3!

 

read.csv

Data van een spreadsheet kun je binnenhalen met read.scv. Hierbij staat "scv" voor "comma seperated values". Je moet je spreadsheetdata dan eerst saven als een scv file. Dan kan R de file als volgt inlezen:

 

> read.scv(file="gegevens.csv")

 

read.mtp, en meer

Data van een ander ("foreign") statistisch programma zoals SAS, SPSS en MINITAB kun je ook binnenhalen. Minitabfiles bijvoorbeeld met read.mtp.

 

bewerken van data

Je kunt bestaande data bewerken met een spreadsheet interface binnen R met

 

> data.entry(x)

 

En als je niet eerst een vector x wilt aanmaken, kun je typen:

 

> data.entry(x=c(NA))

 

En hier kun je eenvoudig getallen intypen. Ook kun je van andere files (bv excel files gegevens copieren, met ‘copy’, en dan vervolgens met ‘paste’ de boel in de spreadsheet van R plakken.

 

Ook kun je de editor opstarten met edit. Wil je de ingetypte of veranderde gegevens bewaren dan zul je het volgende moeten typen

 

> x=edit(x)

 

bewaren van gegevens

 

Met behulp van write.table wordt een object (bijvoorbeeld een data.frame of vector) weggeschreven, naar de default directory.

 

> write.table(y, file = “y.Rdata”)

 

Ook nu weer kunnen, gescheiden door een comma, een aantal argumenten tussen de haakjes worden gevoegd.

 

 

y

Naam van het object dat je wilt bewaren. Je kan ook meerdere objecten in een bestand bewaren. Je moet deze dan in het commando write.table scheiden door comma’s.

file

Geeft tussen haakjes de naam van het te bewaren bestand.

append

=T of F; bewaard reeds bestaande data (in het bestand met de zelfde naam)

quote

Geeft aan welk symbool is gebruikt voor character variabelen

dec

Geeft aan welk symbool is gebruikt voor de decimale punt.

row.names

Een vector met de namen van de rijen

col.names

Een vector met de namen van de variabelen

eol

Geeft het symbool waarmee een end of line wordt aangegeven. Bijvoorbeeld =”\n”.

sep

Geeft aan welk symbool er is gebruikt om velden te scheiden

qmethod

Geeft aan, als quote = TRUE, hoe character variabelen worden behandeld. Bij “e” wordt het “, bij “d” wordt het “” .