Ich habe ein Datenrahmen und einige Spalten haben NA
-Werte.
Wie kann ich diese NA
-Werte durch Nullen ersetzen?
Ich habe ein Datenrahmen und einige Spalten haben NA
-Werte.
Wie kann ich diese NA
-Werte durch Nullen ersetzen?
Ich weiß, die Frage ist bereits beantwortet, aber auf diese Weise kann es für einige nützlicher sein:
Definieren Sie diese Funktion:
na.zero <- function (x) {
x[is.na(x)] <- 0
return(x)
}
Jetzt, wann immer Sie NA's in einem Vektor in Nullen umwandeln müssen, können Sie Folgendes tun:
na.zero(some.vector)
Weiterer allgemeiner Ansatz zur Verwendung von replace()
in einer Matrix oder einem Vektor, um NA
durch 0
zu ersetzen.
Zum Beispiel:
> x <- c(1,2,NA,NA,1,1)
> x1 <- replace(x,is.na(x),0)
> x1
[1] 1 2 0 0 1 1
Dies ist auch eine Alternative zur Verwendung von ifelse()
in dplyr
df = data.frame(col = c(1,2,NA,NA,1,1))
df <- df %>%
mutate(col = replace(col,is.na(col),0))
Mit dplyr
0.5.0 können Sie die coalesce
-Funktion verwenden, die leicht in die %>%
-Pipeline integriert werden kann, indem Sie coalesce(vec, 0)
durchführen. Dies ersetzt alle NAs in vec
durch 0:
Sagen wir, wir haben ein Datenrahmen mit NA
s:
Bibliothek(dplyr)
df <- Datenrahmen(v = c(1, 2, 3, NA, 5, 6, 8))
df
# v
# 1 1
# 2 2
# 3 3
# 4 NA
# 5 5
# 6 6
# 7 8
df %>% mutieren(v = coalesce(v, 0))
# v
# 1 1
# 2 2
# 3 3
# 4 0
# 5 5
# 6 6
# 7 8
Ich hätte @ianmunoz's Post kommentiert, aber ich habe nicht genug Ruf. Du kannst dplyr
's mutate_each
und replace
kombinieren, um die Ersetzung von NA
durch 0
zu erledigen. Mit dem Datenrahmen aus @aL3xa's Antwort...
> m <- matrix(sample(c(NA, 1:10), 100, replace = TRUE), 10)
> d <- as.data.frame(m)
> d
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 4 8 1 9 6 9 NA 8 9 8
2 8 3 6 8 2 1 NA NA 6 3
3 6 6 3 NA 2 NA NA 5 7 7
4 10 6 1 1 7 9 1 10 3 10
5 10 6 7 10 10 3 2 5 4 6
6 2 4 1 5 7 NA NA 8 4 4
7 7 2 3 1 4 10 NA 8 7 7
8 9 5 8 10 5 3 5 8 3 2
9 9 1 8 7 6 5 NA NA 6 7
10 6 10 8 7 1 1 2 2 5 7
> d %>% mutate_each( funs_( interp( ~replace(., is.na(.),0) ) ) )
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 4 8 1 9 6 9 0 8 9 8
2 8 3 6 8 2 1 0 0 6 3
3 6 6 3 0 2 0 0 5 7 7
4 10 6
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.
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?