Kurs
Wie man na.rm zur Behandlung fehlender Werte in R verwendet
Daten werden in rasantem Tempo erzeugt und genutzt, um wichtige Geschäftsentscheidungen zu treffen. Eine häufige Herausforderung bei der Datenanalyse ist das Vorhandensein von fehlenden Werten. Das kann die Ergebnisse verfälschen und macht es für jeden Datenanalysten unumgänglich, sie effektiv zu handhaben. In R ist eines der grundlegenden Werkzeuge zur Verwaltung fehlender Werte der Parameter na.rm
.
In diesem Beitrag wird erklärt, wie wichtig der Umgang mit fehlenden Daten ist, wie na.rm
in R funktioniert, seine Verwendung in verschiedenen Funktionen demonstriert und abschließend einige alternative Techniken zur Identifizierung und zum Umgang mit fehlenden Daten besprochen.
Die kurze Antwort: Was ist na.rm?
Der Parameter na.rm
steht in R für "NA remove" und ignoriert NA
(fehlende) Werte bei den Berechnungen. Wenn du na.rm = TRUE
einstellst, berechnen Funktionen wie mean()
, sum()
, min()
, max()
, median()
und sd()
die Ergebnisse, ohne von fehlenden Werten beeinflusst zu werden.
Der Parameter na.rm
, der in Kleinbuchstaben geschrieben wird, enthält einen booleschen Wert -TRUE
oder FALSE
. Wenn wir na.rm = TRUE
einstellen, schließt R die Werte von NA
von den Berechnungen aus. Ohne diesen Parameter würden die Funktionen NA
zurückgeben, wenn in den Daten fehlende Werte vorhanden sind. Sieh es dir an.
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
Mehr über die Grundlagen der R-Programmierung erfährst du im Kurs Einführung in R.
Warum na.rm benutzen?
Der Umgang mit fehlenden Werten ist bei der Datenanalyse von entscheidender Bedeutung, um genaue Ergebnisse zu gewährleisten, denn sie können statistische Berechnungen erheblich beeinflussen und ungewollt zu falschen Schlussfolgerungen führen. Mit na.rm
können Fehler vermieden werden, indem diese fehlenden Werte übersprungen werden, wodurch zuverlässige Berechnungen durchgeführt und die Datenintegrität gewahrt wird.
Der Kurs " Datenbereinigung in R" ist wertvoll, um unsere Fähigkeiten in der Datenanalyse zu verbessern.
Gemeinsame Funktionen mit na.rm: Einige praktische Beispiele
Jetzt wollen wir verstehen, wie man na.rm
in R verwendet. Mehrere R-Funktionen enthalten den Parameter na.rm
(standardmäßig auf FALSE
gesetzt). Hier sind einige gängige Beispiele:
sum()
Wie der Name schon sagt, berechnet die sum()
die Summe der Werte in einem Vektor. Erstellen wir einen Vektor mit dem Namen vector_with_na
, den wir in diesem Lernprogramm durchgängig verwenden werden.
vector_with_na <- c(1, 2, NA, 4)
sum(vector_with_na)
# Returns NA
sum(vector_with_na, na.rm = TRUE)
# Returns 7
mean()
Im gleichen Beispiel berechnet die Funktion mean()
den Mittelwert, also den Durchschnitt der Werte in unserem Vektor.
mean(vector_with_na)
# Returns NA
mean(vector_with_na, na.rm = TRUE)
# Returns 2.33
sd()
Wenn du mit vector_with_na
fortfährst, berechnet die sd()
die Standardabweichung des Vektors.
sd(vector_with_na)
# Returns NA
sd(vector_with_na, na.rm = TRUE)
# Returns 1.53
min()
Die min()
findet den Mindestwert.
min(vector_with_na)
# Returns NA
min(vector_with_na, na.rm = TRUE)
# Returns 1
max()
max()
findet den maximalen Wert.
max(vector_with_na)
# Returns NA
max(vector_with_na, na.rm = TRUE)
# Returns 4
median()
median()
findet den mittleren Wert, wenn er in der richtigen Reihenfolge angeordnet ist.
median(vector_with_na)
# Returns NA
median(vector_with_na, na.rm = TRUE)
# Returns 2
Beachte, dass in Abwesenheit von na.rm = TRUE
alle diese Aggregatfunktionen NA
zurückgeben.
Durch die Einstellung na.rm = TRUE
schließen diese Funktionen NA
Werte aus, was zu genauen und aussagekräftigen Berechnungen führt. Der Lernpfad Grundlagen der R-Programmierung ist eine gute Ressource, um die Verwendung und Syntax dieser Funktionen besser zu verstehen.
Umgang mit fehlenden Werten in verschiedenen Datenstrukturen
Schauen wir uns an, wie man mit fehlenden Werten in verschiedenen Datenstrukturen umgeht. Bevor wir fortfahren, schau dir unsere Beherrschen von Datenstrukturen in der Programmiersprache R wenn du mehr über R-Datenstrukturen erfahren möchtest.
Vektoren
In Vektoren kann na.rm
direkt in Funktionen verwendet werden, um fehlende Werte auszuschließen. Die Beispiele im vorherigen Abschnitt sind alle Beispiele für na.rm
in Aktion auf Vektoren.
Datenrahmen
Bei Datenrahmen kann na.rm
innerhalb von Funktionen angewendet werden, die auf bestimmte Spalten oder Zeilen angewendet werden, indem die apply()
wie unten gezeigt verwendet wird:
apply(X, MARGIN, FUN)
Hier:
-
X
: ein Array, ein Datenrahmen oder eine Matrix -
MARGIN
Argument, um festzulegen, wo die Funktion angewendet werden soll:-
MARGIN=1
für Zeilenmanipulation -
MARGIN=2
für Spaltenmanipulation -
MARGIN=c(1,2)
für Zeilen- und Spaltenmanipulation
-
-
FUN
: gibt an, welche Funktion angewendet werden soll. Eingebaute Funktionen wiemean()
,median()
,sum()
,min()
,max()
und benutzerdefinierte Funktionen können angewendet werden.
Erstellen wir einen Datenrahmen, auf den wir uns in diesem Lernprogramm beziehen.
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
Listen
Die Funktion lapply()
in R wird verwendet, um eine bestimmte Funktion auf jedes Element einer Liste, eines Vektors oder eines Datenrahmens anzuwenden, und sie gibt eine Liste mit derselben Länge zurück. Diese Funktion benötigt keinen MARGIN
Parameter, da sie die Operation automatisch auf alle Elemente anwendet.
Syntax:
lapply(vector_with_na, fun)
Hier:
: Die Eingabeliste, der Vektor oder der Datenrahmen.vector_with_na
fun
: Die Funktion, die auf jedes Eingabedatenelement angewendet werden soll.
Lass uns lapply()
anhand eines Listenbeispiels verstehen. Hier haben wir eine Liste von Sammlungen (item_1
und item_2
) mit Elementen, die dem Datenrahmen (dataframe_with_na
) ähneln. Unser Ziel ist es, den Mittelwert jeder Sammlung zu finden.
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
Die Funktion sapply()
ist ähnlich wie lapply()
, gibt aber statt einer Liste ein Array oder eine Matrix zurück. Verwenden wir die Liste (list_with_na
) und die sapply()
, um den Mittelwert der Werte jeder Sammlung darin zu berechnen.
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
Verwenden wir nun den Datenrahmen (dataframe_with_na
) und die sapply()
, um die Summe der Werte jeder Spalte zu berechnen.
sapply(dataframe_with_na, sum)
# Returns
# col1 col2
# NA NA
sapply(dataframe_with_na, sum, na.rm=TRUE)
# Returns
# col1 col2
# 10 16
Für ein umfassenderes Verständnis der Datenbearbeitung in R ist der Kurs Datenbearbeitung mit dplyr sehr zu empfehlen. Wenn du dich bei der apply()-Funktionsfamilie unsicher fühlst, lies dir unser Tutorial über die R Apply-Familie durch.
Vergleich mit na.omit() und complete.cases()
na.omit()
: Diese Funktion entfernt alle Zeilen, die NA
Werte in einem Datenrahmen enthalten. Lass uns das anhand eines Beispiels verstehen:
na.omit(dataframe_with_na)
# Returns
# col1 col2
# 1 1 4
# 4 6 7
complete.cases()
: Auf der anderen Seite identifiziert complete.cases()
Zeilen ohne NA
Werte und gibt ein bool für jede Zeile zurück (FALSE
für Zeilen mit NA
und umgekehrt). Damit kannst du die nicht fehlenden Werte im Datenrahmen filtern, wie unten gezeigt.
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
Fortgeschrittene Techniken zur Behandlung fehlender Werte
Über na.rm
hinaus bietet R fortschrittliche Methoden für den Umgang mit fehlenden Daten:
Mit is.na() fehlende Werte identifizieren
is.na()
kann direkt auf einen Vektor oder Datenrahmen angewendet werden, um fehlende Daten zu identifizieren. Sie gibt für jeden fehlenden Wert eine TRUE
zurück.
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
Anwendung von Imputationsmethoden
Bei der Imputation werden fehlende Werte durch geschätzte Werte ersetzt, z. B. durch den Mittelwert oder den Median, wie unten dargestellt:
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
Verwendung der Funktion summary()
Interessanterweise unterscheidet sich die Funktionsummary()
bei der Behandlung fehlender Werte von na.rm
. Standardmäßig schließt summary()
bei der Berechnung der zusammenfassenden Statistik fehlende Werte automatisch aus und meldet anschließend die Anzahl der in den Daten vorhandenen NA
s.
Lass uns summary()
mit dem Vektor vector_with_na
ausführen:
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
Und auf dem Datenrahmen 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
Der R-Kurs für Fortgeschrittene bietet vertiefte Einblicke für diejenigen, die sich für fortgeschrittene Datenverarbeitungstechniken interessieren.
Best Practices für den Umgang mit fehlenden Werten
Für den effektiven Umgang mit fehlenden Werten gibt es mehrere Best Practices:
Prüfe immer auf fehlende Werte
Erkenne und verstehe das Ausmaß der fehlenden Daten, bevor du Berechnungen durchführst. Das folgende Beispiel zeigt, dass der Datenrahmen insgesamt 2 fehlende Werte enthält.
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
Bedingte Prüfungen verwenden
Überprüfe immer das Vorhandensein fehlender Daten und wende entsprechend alle Imputationsverfahren an, um sicherzustellen, dass alle Randfälle gut behandelt werden.
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
Berücksichtige den Kontext
Verstehe, warum Daten fehlen und wähle eine geeignete Methode, um damit umzugehen - Entfernung oder Imputation.
Für eine strukturierte Herangehensweise an die Datenanalyse und den Umgang mit fehlenden Werten ist die Datenbereinigung in R Kurs eine großartige Ressource sein.
Fazit
Das Verständnis und die Nutzung von na.rm
sind der Schlüssel für eine zuverlässige und genaue Datenanalyse. Übe die Verwendung von na.rm
in R-Projekten und erkunde fortgeschrittene Techniken, um fehlende Daten umfassend zu behandeln.
Wenn du weiter lernen möchtest, kannst du diese zusätzlichen Ressourcen nutzen:
- Datenbereinigung: Verbessere deine Fähigkeiten zur Datenanalyse mit unserem Kurs Data Cleaning in R.
- Einführung in R: Mit unserem Kurs "Einführung in R" kannst du in die R-Programmierung einsteigen.
- Datenvisualisierung: Mit unserem Kurs "Einführung in die Datenvisualisierung mit ggplot2 " lernst du, überzeugende Visualisierungen zu erstellen.
- Datenbearbeitung: Verbessere deine Techniken zur Datenbearbeitung mit unserem KursDatenbearbeitung mit dplyr.
- Regressionsanalyse: Tauche ein in Regressionstechniken und lerne Statistik mit unserem Kurs Einführung in die Regression in R.

Ich bin KI-Stratege und Ethiker und arbeite an der Schnittstelle von Datenwissenschaft, Produkt und Technik, um skalierbare maschinelle Lernsysteme zu entwickeln. Als einer der "Top 200 Business and Technology Innovators" der Welt bin ich auf der Mission, das maschinelle Lernen zu demokratisieren und den Fachjargon zu überwinden, damit jeder an diesem Wandel teilhaben kann.
Häufig gestellte Fragen
Was ist der na.rm-Parameter in R?
Der Parameter na.rm
in R steht für "NA entfernen". Wenn sie auf TRUE gesetzt ist, weist sie Funktionen an, NA
(fehlende) Werte bei Berechnungen zu ignorieren, um genaue Ergebnisse zu gewährleisten.
Wie benutzt du na.rm in gängigen R-Funktionen?
Du kannst na.rm in Funktionen wie sum()
, mean()
, sd()
, min()
, max()
und median()
verwenden, indem du na.rm = TRUE
so einstellst, dass fehlende Werte von den Berechnungen ausgeschlossen werden.
Warum ist der Umgang mit fehlenden Werten bei der Datenanalyse wichtig?
Fehlende Werte können die Ergebnisse verfälschen und zu ungenauen Schlussfolgerungen führen. Ein effektiver Umgang mit ihnen sorgt für zuverlässige Berechnungen und bewahrt die Datenintegrität.
Kann na.rm mit Datenrahmen und Listen in R verwendet werden?
Ja, na.rm
kann bei Datenrahmen mit Funktionen wie apply()
und bei Listen mit lapply()
und sapply()
verwendet werden, um fehlende Werte bei Operationen mit diesen Datenstrukturen auszuschließen.
Welche fortgeschrittenen Techniken gibt es für den Umgang mit fehlenden Werten in R?
Über na.rm
hinaus gibt es fortgeschrittene Techniken wie is.na()
, um fehlende Werte zu identifizieren, Imputationsmethoden anzuwenden, um sie zu ersetzen, und Funktionen wie na.omit()
und complete.cases()
für komplexere Datenbereinigung zu nutzen.
R lernen mit DataCamp
Kurs
Zwischenstufe R
Kurs