Indlæs først datasættet igen
myFrame<-dget("https://statepi.statnoter.dk/data/myDataset.robj") #indlæs filen myDataset.robj, og gem data i dataframe'en "myFrame"
head(myFrame)
id køn alder bmi livvidde P-glucose(faste)
1 76891 2 20 36.1 105.0 4.496
2 79112 2 22 36.4 105.8 5.107
3 82414 1 68 28.6 104.2 NA
4 82116 2 18 46.7 128.4 5.384
5 74381 2 25 23.7 82.1 4.774
6 75714 1 54 23.9 88.8 8.660
Antal rækker i en dataframe kan ses med funktionen nrow.
Hvis man i stedet er interesseret i længden af en vektor (altså en række
med tal), så bruges funktionen length som vi tidligere har
set.
#antal rækker i datasættet:
nrow(myFrame)
[1] 200
#antal elementer i en vektor (husk en vektor er bare een kolonne tal) -
#giver selvfølgelig samme resultat som antal rækker i dataframen
length(myFrame$alder)
[1] 200
#Bemærk at man benytter to forskellige funktioner til at tælle antal rækker i en dataframe og antal elementer i en vektor.
#kvartiler for alder i datasættet (se f.eks. statnoter.dk side 2.7):
quantile(x = myFrame$alder, probs = c(0.25, 0.50, 0.75))
25% 50% 75%
21.0 37.5 55.0
En enkelt kommentar til ovenstånde kommando: Funktionen
quantile() skal have to argumenter, dels x som
er det datasæt der skal beregnes fraktiler for, dels probs
som er den fraktil-sandsynlighed man ønsker at beregne (f.eks. 0.25 for
nedre kvartil eller 0.5 for medianen).
Mange R-funktioner kan imidlertid lave flere beregninger på en gang,
og her er det muligt, samtidigt, at angive flere tal som input til
probs. Når man i R skal angive en række af tal (det kaldes
formelt en vektor), så skal tallene “sættes ind” i funktionen
c(), som man kan se herover. Husk at “.” benyttes som
decimal-tegn, mens “,” herover altså benyttes til at adskille de 3
sandsynligheder, vi ønsker at beregne fraktiler for; ligesom komma
benyttes til at adskille forskellige parametre til en funktion (eller
kommando).
Det er let at foretage beregninger på samtlige rækker, og gemme disse i en ny kolonne. Hvis vi f.eks. gerne vil beregne forholdet mellem BMI og livvidde for hver person og gemme i en ny kolonne (BMI_livvide) - lad være med at spørge hvad det tal skal bruges til :-)
myFrame$BMI_livvidde <- myFrame$livvidde / myFrame$bmi
head(myFrame) #vis dataframen igen
id køn alder bmi livvidde P-glucose(faste) BMI_livvidde
1 76891 2 20 36.1 105.0 4.496 2.908587
2 79112 2 22 36.4 105.8 5.107 2.906593
3 82414 1 68 28.6 104.2 NA 3.643357
4 82116 2 18 46.7 128.4 5.384 2.749465
5 74381 2 25 23.7 82.1 4.774 3.464135
6 75714 1 54 23.9 88.8 8.660 3.715481
Bemærk at der nu er tilføjet en ny kolonne til dataframen.
#Og måske vil vi gerne have resultatet til at fremstå med 2 decimaler, hvilket kan gøres med funktionen 'round'
myFrame$BMI_livvidde <- round(myFrame$BMI_livvidde, 2)
head(myFrame)
id køn alder bmi livvidde P-glucose(faste) BMI_livvidde
1 76891 2 20 36.1 105.0 4.496 2.91
2 79112 2 22 36.4 105.8 5.107 2.91
3 82414 1 68 28.6 104.2 NA 3.64
4 82116 2 18 46.7 128.4 5.384 2.75
5 74381 2 25 23.7 82.1 4.774 3.46
6 75714 1 54 23.9 88.8 8.660 3.72