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?
Das cleaner
-Paket verfügt über eine generische Funktion na_replace()
, die standardmäßig numerische Werte durch Nullen, logische Werte durch FALSE
, Datumswerte durch den aktuellen Tag usw. ersetzt:
library(dplyr)
library(cleaner)
starwars %>% na_replace()
na_replace(starwars)
Es unterstützt sogar vektorisierte Ersetzungen:
mtcars[1:6, c("mpg", "hp")] <- NA
na_replace(mtcars, mpg, hp, replacement = c(999, 123))
Dokumentation: https://msberends.github.io/cleaner/reference/na_replace.html
Another dplyr
Pipe-kompatible Option mit der tidyr
-Methode replace_na
, die für mehrere Spalten funktioniert:
require(dplyr)
require(tidyr)
m <- matrix(sample(c(NA, 1:10), 100, replace = TRUE), 10)
d <- as.data.frame(m)
myList <- setNames(lapply(vector("list", ncol(d)), function(x) x <- 0), names(d))
df <- d %>% replace_na(myList)
Sie können es leicht auf z.B. numerische Spalten beschränken:
d$str <- c("string", NA)
myList <- myList[sapply(d, is.numeric)]
df <- d %>% replace_na(myList)
Diese einfache Funktion, die aus Datacamp extrahiert wurde, könnte helfen:
replace_missings <- function(x, replacement) {
is_miss <- is.na(x)
x[is_miss] <- replacement
Nachricht(sum(is_miss), " fehlende Werte wurden durch den Wert ", replacement, " ersetzt")
x
}
Dann
replace_missings(df, replacement = 0)
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?