977 Stimmen

Wie kann ich NA-Werte in einem R-Datenrahmen durch Nullen ersetzen?

Ich habe ein Datenrahmen und einige Spalten haben NA-Werte.

Wie kann ich diese NA-Werte durch Nullen ersetzen?

16 Stimmen

Kleine Änderung von stackoverflow.com/questions/7279089/… (die ich durch die Suche nach "[r] Ersatz von NA durch Null" gefunden habe) ...

0 Stimmen

@psychonomics Was ist der Unterschied zwischen Ihrem Kommentar und der besten Antwort?

1 Stimmen

@svp - Vielleicht nichts? Ich kann meinen Kommentar nicht sehen. Ist es möglich, dass ich ihn gelöscht habe und du ihn immer noch sehen kannst?

1170voto

aL3xa Punkte 33989

Siehe meinen Kommentar in @gsk3-Antwort. Ein einfaches Beispiel:

> m <- matrix(sample(c(NA, 1:10), 100, replace = TRUE), 10)
> d <- as.data.frame(m)
   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1   4  3 NA  3  7  6  6 10  6   5
2   9  8  9  5 10 NA  2  1  7   2
3   1  1  6  3  6 NA  1  4  1   6
4  NA  4 NA  7 10  2 NA  4  1   8
5   1  2  4 NA  2  6  2  6  7   4
6  NA  3 NA NA 10  2  1 10  8   4
7   4  4  9 10  9  8  9  4 10  NA
8   5  8  3  2  1  4  5  9  4   7
9   3  9 10  1  9  9 10  5  3   3
10  4  2  2  5 NA  9  7  2  5   5

> d[is.na(d)] <- 0

> d
   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1   4  3  0  3  7  6  6 10  6   5
2   9  8  9  5 10  0  2  1  7   2
3   1  1  6  3  6  0  1  4  1   6
4   0  4  0  7 10  2  0  4  1   8
5   1  2  4  0  2  6

162voto

Ari B. Friedman Punkte 69065

Für einen einzelnen Vektor:

x <- c(1,2,NA,4,5)
x[is.na(x)] <- 0

Für ein data.frame, erstellen Sie eine Funktion aus dem obigen Beispiel und wenden Sie sie dann auf die Spalten an.

Bitte geben Sie beim nächsten Mal ein reproduzierbares Beispiel an, das hier detailliert beschrieben ist:

Wie erstellt man ein großartiges reproduzierbares Beispiel in R?

98voto

ianmunoz Punkte 1553

Dplyr Beispielmuster:

library(dplyr)

df1 <- df1 %>%
    mutate(myCol1 = if_else(is.na(myCol1), 0, myCol1))

Hinweis: Dies funktioniert pro ausgewählter Spalte. Wenn wir dies für alle Spalten benötigen, siehe Antwort von @reidjax unter Verwendung von mutate_each.

73voto

Sasha Punkte 5163

Es ist auch möglich, tidyr::replace_na zu verwenden.

    library(tidyr)
    df <- df %>% mutate_all(funs(replace_na(.,0)))

Bearbeiten (dplyr > 1.0.0):

df %>% mutate(across(everything(), .fns = ~replace_na(.,0)))

72voto

mrsoltys Punkte 1055

Wenn wir versuchen, NAs beim Exportieren zu ersetzen, z. B. beim Schreiben in eine CSV-Datei, dann können wir Folgendes verwenden:

  write.csv(data, "data.csv", na = "0")

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X