# Our seven participants self-reported their age:
<- c(23,25,23,21,25,NA,20)
participants_age
# What is the mean age?
mean(participants_age)
[1] NA
Søren O’Neill & Steen Harsted
January 6, 2025
Take a look at this simple code:
# Our seven participants self-reported their age:
participants_age <- c(23,25,23,21,25,NA,20)
# What is the mean age?
mean(participants_age)
[1] NA
The NA values indicates a data point that is Not Available, i.e. missing. This is fundementally not the same as NULL or 0. So how would you calculate a mean value? Well, when the age of one participant is unavailable, so is the mean value and R, quite rightly, reports the mean as NA.
You might think, it would be obvious to calculate the mean value of the available values and ignore the one NA. In some cases, that makes sense and is a valid decision to make (or perhaps not). The important think is: you have to decide how to deal with missing values - R won’t do it for you. This is not a bug, it’s a (safety) feature.
Look at this amended code:
# Our seven participants self-reported their age:
participants_age <- c(23,25,23,21,25,NA,20)
# What is the mean age?
mean(participants_age, na.rm=TRUE)
[1] 22.83333
What is your best quess as to the meaning of na.rm=TRUE
?
Se på denne enkle kode:
# Vores syv deltagere har selvrapporteret deres alder:
participants_age <- c(23,25,23,21,25,NA,20)
# Hvad er den gennemsnitlige alder?
mean(participants_age)
[1] NA
NA-værdier angiver et datapunkt, der er Not Available (ikke tilgængeligt), dvs. mangler. Dette er fundamentalt ikke det samme som NULL eller 0. Så hvordan beregner man en gennemsnitsværdi? Når alderen på en deltager mangler, mangler også gennemsnitsværdien, og R rapporterer ganske korrekt gennemsnittet som NA.
Man kunne måske tænke, at det ville være oplagt at beregne gennemsnitsværdien af de tilgængelige værdier og ignorere den ene NA. I nogle tilfælde giver det mening og er en valid beslutning (eller måske ikke). Det vigtige er: du skal selv beslutte, hvordan du vil håndtere manglende værdier – R gør det ikke for dig. Dette er ikke en fejl, men en (sikkerheds)funktion.
Se på denne ændrede kode:
# Vores syv deltagere har selvrapporteret deres alder:
participants_age <- c(23,25,23,21,25,NA,20)
# Hvad er den gennemsnitlige alder?
mean(participants_age, na.rm=TRUE)
[1] 22.83333
Hvad er dit bedste bud på betydningen af na.rm=TRUE
?