Ga naar hoofdinhoud

na.rm gebruiken om ontbrekende waarden in R te verwerken

We zetten na.rm = TRUE in veelgebruikte R-functies om ontbrekende (NA) waarden uit te sluiten. Zo berekenen we nauwkeurige statistieken en vergroten we de betrouwbaarheid van onze resultaten.
· 8 min lezen

Verken met AI

Data wordt in een razend tempo gegenereerd en geconsumeerd om belangrijke bedrijfsbeslissingen te ondersteunen. Een veelvoorkomende uitdaging bij data-analyse is echter de aanwezigheid van ontbrekende waarden. Die kunnen resultaten vertekenen, waardoor elke data-analist ze effectief moet afhandelen. In R is een van de basistools voor het beheren van ontbrekende waarden de parameter na.rm.

Deze post legt het belang uit van het omgaan met ontbrekende data, hoe na.rm in R werkt, laat het gebruik in verschillende functies zien en sluit af met alternatieve technieken om ontbrekende data te identificeren en te verwerken.

Het korte antwoord: wat is na.rm?

De parameter na.rm in R staat voor "NA remove" en negeert NA- (ontbrekende) waarden tijdens berekeningen. Door na.rm = TRUE te zetten, berekenen functies zoals mean(), sum(), min(), max(), median() en sd() resultaten zonder beïnvloed te worden door ontbrekende waarden.

De parameter na.rm, in kleine letters geschreven, neemt een booleaanse waarde aan—TRUE of FALSE. Als we na.rm = TRUE instellen, sluit R NA-waarden uit van de berekeningen. Zonder deze parameter zouden functies NA retourneren als er ontbrekende waarden in de data zitten. Kijk maar.

vector_with_na <- c(1, 2, NA)

sum(vector_with_na, na.rm = TRUE) # removes NA values — returns 3
sum(vector_with_na) # includes NA values — returns NA
sum(vector_with_na, na.rm = FALSE) # includes NA values — returns NA

Bekijk de cursus Introduction to R voor meer over basis R-programmeren.

Waarom na.rm gebruiken?

Het afhandelen van ontbrekende waarden is cruciaal in data-analyse om nauwkeurige resultaten te garanderen, omdat ze statistische berekeningen aanzienlijk kunnen beïnvloeden en zo onbedoeld tot verkeerde conclusies kunnen leiden. Met na.rm kun je gemakkelijk fouten vermijden door deze ontbrekende waarden over te slaan, waardoor je betrouwbare berekeningen uitvoert en de dataintegriteit bewaart.

De cursus Data Cleaning in R is waardevol om onze data-analysevaardigheden verder te ontwikkelen.

Veelgebruikte functies met na.rm: praktische voorbeelden

Laten we nu begrijpen hoe je na.rm in R gebruikt. Verschillende R-functies bevatten de parameter na.rm (standaard ingesteld op FALSE). Dit zijn enkele veelvoorkomende voorbeelden:

sum()

Zoals de naam al aangeeft, berekent sum() de som van de waarden in een vector. Laten we een vector maken met de naam vector_with_na, die we in deze tutorial blijven gebruiken.

vector_with_na <- c(1, 2, NA, 4)

sum(vector_with_na) 
# Returns NA

sum(vector_with_na, na.rm = TRUE) 
# Returns 7

mean()

Met hetzelfde voorbeeld berekent de functie mean() het gemiddelde van de waarden in onze vector.

mean(vector_with_na) 
# Returns NA

mean(vector_with_na, na.rm = TRUE) 
# Returns 2.33

sd()

Met vector_with_na gaat sd() de standaarddeviatie van de vector berekenen.

sd(vector_with_na) 
# Returns NA

sd(vector_with_na, na.rm = TRUE) 
# Returns 1.53

min()

min() vindt de kleinste waarde.

min(vector_with_na) 
# Returns NA

min(vector_with_na, na.rm = TRUE) 
# Returns 1

max()

max() vindt de grootste waarde.

max(vector_with_na) 
# Returns NA

max(vector_with_na, na.rm = TRUE) 
# Returns 4

median()

median() vindt de middelste waarde wanneer de waarden op volgorde staan.

median(vector_with_na) 
# Returns NA

median(vector_with_na, na.rm = TRUE) 
# Returns 2

Let op: als na.rm = TRUE ontbreekt, retourneren al deze aggregatiefuncties NA.

Door na.rm = TRUE in te stellen, sluiten deze functies NA-waarden uit, wat leidt tot nauwkeurige en betekenisvolle berekeningen. De skill track R Programming Fundamentals is een goede bron om het gebruik en de syntaxis van deze functies beter te begrijpen.

Ontbrekende waarden verwerken in verschillende datastructuren

Laten we bekijken hoe je ontbrekende waarden in verschillende datastructuren verwerkt. Wil je meer leren over R-datastructuren voordat we verdergaan? Lees dan onze tutorial Mastering Data Structures in the R Programming Language.

Vectoren

In vectoren kun je na.rm direct in functies gebruiken om ontbrekende waarden uit te sluiten. De voorbeelden in de vorige sectie laten allemaal na.rm in actie zien op vectoren.

Data frames

Voor data frames kan na.rm worden toegepast binnen functies op specifieke kolommen of over rijen met behulp van apply(), zoals hieronder getoond:

apply(X, MARGIN, FUN)

Hierbij geldt:

  • X: een array, data frame of matrix

  • MARGIN: argument om aan te geven waar de functie moet worden toegepast:

    • MARGIN=1 voor rijbewerkingen

    • MARGIN=2 voor kolombewerkingen

    • MARGIN=c(1,2) voor zowel rij- als kolombewerkingen

  • FUN: geeft aan welke functie wordt toegepast. Ingebouwde functies zoals mean(), median(), sum(), min(), max() en zelfgeschreven functies kunnen worden toegepast.

Laten we een data frame maken dat we in deze tutorial blijven gebruiken.

dataframe_with_na <- data.frame(col1 = c(1, NA, 3, 6), col2 = c(4, 5, NA, 7))

print(dataframe_with_na)
# Returns
#   col1 col2
# 1    1    4
# 2   NA    5
# 3    3   NA
# 4    6    7

apply(dataframe_with_na, 1, mean)
# Returns
# [1] 2.5  NA  NA 6.5

apply(dataframe_with_na, 1, mean, na.rm = TRUE)
# Returns
# [1] 2.5 5.0 3.0 6.5

apply(dataframe_with_na, 2, mean)
# Returns
# col1 col2 
#  NA   NA 

apply(dataframe_with_na, 2, mean, na.rm = TRUE)
# Returns   
#   col1     col2 
# 3.333333 5.333333

Lijsten

De functie lapply() in R wordt gebruikt om een opgegeven functie toe te passen op elk element van een lijst, vector of data frame en retourneert een lijst van dezelfde lengte. Deze functie heeft geen MARGIN-parameter nodig, omdat de bewerking automatisch op alle elementen wordt toegepast.

Syntaxis:

lapply(vector_with_na, fun)

Hierbij geldt:

  • vector_with_na: de invoerlijst, -vector of het data frame.
  • fun: de functie die op elk element van de inputdata wordt toegepast.

Laten we lapply() begrijpen met een lijstvoorbeeld. We hebben een lijst met collecties (item_1 en item_2) met elementen die lijken op het data frame (dataframe_with_na). Ons doel is het gemiddelde van elke collectie te vinden.

list_with_na <- list(item_1=c(1, NA, 3, 6), item_2=c(4, 5, NA, 7))

lapply(list_with_na, mean)
# Returns
# $item_1
# [1] NA
# 
# $item_2
# [1] NA

lapply(list_with_na, mean, na.rm =TRUE)
# Returns
# $item_1
# [1] 3.333333
# 
# $item_2
# [1] 5.333333

De functie sapply() lijkt op lapply(), maar retourneert een array of matrix in plaats van een lijst. Laten we de lijst (list_with_na) en sapply() gebruiken om het gemiddelde van de waarden van elke collectie erin te berekenen.

sapply(list_with_na, mean)
# Returns
# a  b 
# NA NA 

sapply(list_with_na, mean, na.rm = TRUE)

# Returns
# a        b 
# 3.333333 5.333333

Nu gebruiken we het data frame (dataframe_with_na) en sapply() om de som van de waarden van elke kolom te berekenen.

sapply(dataframe_with_na, sum)

# Returns
# col1 col2 
# NA   NA 

sapply(dataframe_with_na, sum, na.rm=TRUE)
# Returns
# col1 col2 
# 10   16

Voor een bredere kijk op datamanipulatie in R is de cursus Data Manipulation with dplyr sterk aan te raden. Als je je juist onzeker voelt over de apply()-familie van functies, lees dan onze Tutorial on the R Apply Family.

Vergelijking met na.omit() en complete.cases()

na.omit(): deze functie verwijdert alle rijen met NA-waarden in een data frame. Begrijp dit met een voorbeeld:

na.omit(dataframe_with_na)
# Returns
# col1 col2
# 1    1    4
# 4    6    7

complete.cases(): complete.cases() daarentegen identificeert rijen zonder NA-waarden en retourneert een bool die overeenkomt met elke rij (FALSE voor rijen met NA en andersom). Dit kan worden gebruikt om de niet-ontbrekende waarden in het data frame te filteren, zoals hieronder weergegeven.

complete.cases(dataframe_with_na)
# Returns
# [1]  TRUE FALSE FALSE  TRUE

dataframe_with_na[complete.cases(dataframe_with_na), ]
# Returns
# col1 col2
# 1    1    4
# 4    6    7

Geavanceerde technieken voor het verwerken van ontbrekende waarden

Naast na.rm biedt R geavanceerde methoden om met ontbrekende data om te gaan:

Met is.na() ontbrekende waarden identificeren

is.na() kan direct op een vector of data frame worden toegepast om ontbrekende data te identificeren. Het retourneert een TRUE voor elke ontbrekende waarde.

is.na(vector_with_na)
# Returns
# [1] FALSE FALSE  TRUE FALSE

is.na(dataframe_with_na)
# Returns
# col1  col2
# [1,] FALSE FALSE
# [2,]  TRUE FALSE
# [3,] FALSE  TRUE
# [4,] FALSE FALSE

Imputatiemethoden toepassen

Imputatie vervangt ontbrekende waarden door geschatte waarden, zoals het gemiddelde of de mediaan, zoals hieronder getoond:

vector_with_na[is.na(vector_with_na)] <- mean(vector_with_na, na.rm = TRUE)

print(vector_with_na)
# Returns
# [1] 1.000000 2.000000 2.333333 4.000000

dataframe_with_na[is.na(dataframe_with_na)] <- sapply(dataframe_with_na, mean, na.rm=TRUE)
print(dataframe_with_na)
# Returns
# col1     col2
# 1 1.000000 4.000000
# 2 3.333333 5.000000
# 3 3.000000 5.333333
# 4 6.000000 7.000000

De functie summary() gebruiken

Interessant genoeg verschilt de functie summary() van het gebruik van na.rm voor het verwerken van ontbrekende waarden. Standaard sluit summary() ontbrekende waarden automatisch uit bij het berekenen van samenvattende statistieken en rapporteert vervolgens het aantal aanwezige NA's in de data.

Laten we summary() uitvoeren op de vector vector_with_na:

summary(vector_with_na)
#Returns
#   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
#  1.000   1.500   2.000   2.333   3.000   4.000       1

En op het data frame dataframe_with_na:

summary(dataframe_with_na)
# Returns
# col1           col2     
# Min.   :1.00   Min.   :4.00  
# 1st Qu.:2.50   1st Qu.:4.75  
# Median :3.00   Median :5.00  
# Mean   :3.25   Mean   :5.25  
# 3rd Qu.:3.75   3rd Qu.:5.50  
# Max.   :6.00   Max.   :7.00 

De cursus Intermediate R biedt diepgaande inzichten voor wie geïnteresseerd is in meer geavanceerde technieken voor gegevensverwerking.

Best practices voor het verwerken van ontbrekende waarden

Ontbrekende waarden effectief verwerken omvat een aantal best practices:

Controleer altijd op ontbrekende waarden

Identificeer en begrijp de omvang van ontbrekende data voordat je berekeningen uitvoert. In het onderstaande voorbeeld zie je dat het data frame in totaal 2 ontbrekende waarden heeft.

print(dataframe_with_na)
# Returns
# col1 col2
# 1    1    4
# 2   NA    5
# 3    3   NA
# 4    6    7

sum(is.na(dataframe_with_na))
# Returns
# [1] 2

Gebruik conditionele controles

Controleer altijd of er ontbrekende data aanwezig is en pas vervolgens eventuele imputatietechnieken toe, zodat alle randgevallen goed worden afgehandeld.

if(any(is.na(dataframe_with_na))) {  
  if (class(dataframe_with_na) == "data.frame") {    
   dataframe_with_na[is.na(dataframe_with_na)] <- sapply(dataframe_with_na, median, na.rm=TRUE)      
  }
}

print(dataframe_with_na)
# Returns
# col1 col2
# 1    1    4
# 2    3    5
# 3    3    5
# 4    6    7

Houd rekening met de context

Begrijp waarom data ontbreekt en kies een passende methode om dit te verwerken—verwijderen of imputeren.

Voor een gestructureerde aanpak van data-analyse en het omgaan met ontbrekende waarden kan de cursus Data Cleaning in R een geweldige bron zijn.

Conclusie

Het begrijpen en gebruiken van na.rm is essentieel om betrouwbare en nauwkeurige data-analyse te garanderen. Oefen met na.rm in R-projecten en verken geavanceerde technieken om ontbrekende data volledig te verwerken.

Wil je verder leren? Bekijk dan deze aanvullende bronnen:

Vidhi Chugh

Auteur

Vidhi Chugh

Ik ben een AI-strateeg en -ethicus die op het snijvlak van data science, product en engineering werkt aan schaalbare machinelearningsystemen. Genoteerd als een van de "Top 200 Business and Technology Innovators" ter wereld, heb ik als missie machine learning te democratiseren en het jargon te doorbreken, zodat iedereen deel kan uitmaken van deze transformatie.

Veelgestelde vragen

Wat is de parameter na.rm in R?

De parameter na.rm in R staat voor "NA remove". Als deze op TRUE staat, instrueert hij functies om NA- (ontbrekende) waarden tijdens berekeningen te negeren, zodat de resultaten kloppen.

Hoe gebruik je na.rm in veelvoorkomende R-functies?

Je kunt na.rm gebruiken in functies zoals sum(), mean(), sd(), min(), max() en median() door na.rm = TRUE in te stellen om ontbrekende waarden uit te sluiten bij de berekening.

Waarom is het belangrijk om ontbrekende waarden te verwerken in data-analyse?

Ontbrekende waarden kunnen resultaten vertekenen en tot onjuiste conclusies leiden. Ze effectief verwerken zorgt voor betrouwbare berekeningen en behoudt de dataintegriteit.

Kun je na.rm gebruiken met data frames en lijsten in R?

Ja, na.rm kan worden gebruikt met data frames via functies zoals apply(), en met lijsten via lapply() en sapply(), om ontbrekende waarden uit te sluiten tijdens bewerkingen op deze datastructuren.

Wat zijn geavanceerde technieken om ontbrekende waarden in R te verwerken?

Naast na.rm zijn er geavanceerde technieken zoals is.na() om ontbrekende waarden te identificeren, imputatiemethoden om ze te vervangen, en functies als na.omit() en complete.cases() voor complexere datacleaning.

Onderwerpen

Gerelateerd