Data frame (tabeller)

Data frame (tabeller) i R

En data frame er som et Excel-ark, altså en tabell med rader og kolonner. En typisk data frame ser slik ut:

Eksempeltabell med personer som rader og variabler som alder, kjønn, vekt, inntekt, utdanning og kolesterol som kolonner

For de fleste formål utgjør observasjonene dine (kunder, pasienter osv.) radene, og kolonnene beskriver observasjonene. Hvis du analyserer pasienter, er hver rad en pasient, og kolonnene beskriver pasientene, for eksempel alder, kjønn, blodtrykk og sykdommer. En data frame er rett og slett en todimensjonal tabell.

De fleste analyser i R gjøres på data frames! Regresjon, maskinlæring, statistiske tester osv. gjøres som regel på data frames.

En data frame lages med funksjonen data.frame().

Du kan lage en data frame manuelt ved å kombinere flere vektorer. Vektorene blir variabler (kolonner) i data framen. La oss lage en data frame med 3 vektorer:

## Lag en sekvens av tall, fra tallet 1 til 15
variable1 <- 1:15

## Generer 15 tilfeldige tall med funksjonen rnorm()
variable2 <- rnorm(15)

## Lag en tegnvektor
variable3 <- c("A", "B", "W", "C", "D", "E", "A", "B", "C", "D", "E", "U", "O", "L", "E")

## Kombiner vektorene til en data frame med funksjonen data.frame()
my_data_frame <- data.frame(variable1, variable2, variable3)

## Se resultatet
my_data_frame
##    variable1   variable2 variable3
## 1          1  2.62236519         A
## 2          2  0.97561295         B
## 3          3 -0.69898033         W
## 4          4 -0.84577095         C
## 5          5  0.14130709         D
## 6          6 -0.59023300         E
## 7          7 -1.28369028         A
## 8          8 -0.50507139         B
## 9          9 -0.03698647         C
## 10        10 -0.75165815         D
## 11        11 -1.26071226         E
## 12        12  1.30092947         U
## 13        13  0.37934736         O
## 14        14 -0.53221638         L
## 15        15 -1.65424529         E

Hver kolonne i en data frame inneholder samme type data. Vektorene skal ha samme lengde, ellers resirkulerer R verdier i det korteste objektet for å fylle de manglende cellene i data framen. Dette kan gi uventede resultater, men det er som regel ikke noe problem, fordi man oftest importerer data til R, og da fyller ikke R inn manglende verdier.

La oss kontrollere strukturen i vår data frame ved hjelp av funksjonen str():

str(my_data_frame)
## 'data.frame':    15 obs. of  3 variables:
##  $ variable1: int  1 2 3 4 5 6 7 8 9 10 ...
##  $ variable2: num  2.622 0.976 -0.699 -0.846 0.141 ...
##  $ variable3: Factor w/ 9 levels "A","B","C","D",..: 1 2 9 3 4 5 1 2 3 4 ...

Funksjonen viser at variable1 er et heltall, variable2 er numerisk og variable3 er en faktor med 9 nivåer (kategorier). R tvang tegnvektoren om til en faktor! Du kan unngå dette ved å bruke argumentet stringsAsFactors = FALSE i funksjonen data.frame():

my_data_frame <- data.frame(variable1, variable2, variable3, stringsAsFactors = FALSE)
str(my_data_frame)
## 'data.frame':    15 obs. of  3 variables:
##  $ variable1: int  1 2 3 4 5 6 7 8 9 10 ...
##  $ variable2: num  2.622 0.976 -0.699 -0.846 0.141 ...
##  $ variable3: chr  "A" "B" "W" "C" ...

Nå er variable3 av typen chr, som er en forkortelse for character.