Data frame (tabeller)
Data frame (tabeller) i R
En data frame är som ett Excelblad, dvs en tabell med rader och kolumner. En typisk data frame ser ut som följer:

För de flesta ändamål utgör dina observationer (kunder, patienter, etc) raderna och kolumnerna beskriver observationerna. Om du analyserar patienter så är varje rad en patient och kolumnerna beskriver patienterna, t ex deras ålder, kön, blodtryck, sjukdomar. En data frame är helt enkelt en tvådimensionell tabell.
De flesta analyser i R görs på data frames! Regression, machine learning, statistiska tester osv, görs oftast på data frames.
En data frame skapas med funktionen data.frame()
.
Du kan manuellt skapa en data frame genom att kombinera flera vektorer. Vektorerna blir variabler (kolumner) i data framen. Låt oss skapa en data frame med 3 vektorer:
# Skapa en sekvens av siffror, från siffran 1 till 15
variable1 <- 1:15
# Generera 15 slumpmässiga siffror med funktionen rnorm()
variable2 <- rnorm(15)
# Skapa en teckenvektor
variable3 <- c("A", "B", "W", "C", "D", "E", "A", "B", "C", "D", "E", "U", "O", "L", "E")
# Kombinera vektorerna till en data frame med funktionen 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
Varje kolumn i en data frame innehåller samma typ av data. Vektorerna ska vara av samma längd, annars återvinner R värden i det kortare objektet för att fylla i de saknade cellerna i data framen. Detta kan ge oväntade resultat men det är oftast inget problem eftersom man oftast importerar data till R, och då fyller R inte i saknade värden.
Låt oss kontrollera strukturen i vår data frame med hjälp av funktionen 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 ...
Funktionen redovisar att variable1 är ett heltal, variable2 är numerisk och variable3 är en faktor med 9 nivåer (kategorier). R tvingade teckenvektorn till en faktor! Du kan undvika detta genom att använda argumentet stringsAsFactors = FALSE
i funktionen 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" ...
Nu är variable3 av typen chr, vilket är förkortning för character.