J'essaie de remplir tous les NA de mes données avec des 0. Est-ce que quelqu'un sait comment faire cela en utilisant replace_na de tidyr? À partir de la documentation, nous pouvons facilement remplacer les NA dans différentes colonnes avec des valeurs différentes. Mais comment les remplacer tous par une valeur? J'ai beaucoup de colonnes ...
En utilisant le jeu de données mtcars comme exemple:
mtcars [sample(1:nrow(mtcars), 4), sample(1:ncol(mtcars), 4)]<- NA
mtcars %>% replace_na( ??? )
Si replace_na n'est pas une exigence obligatoire, le code suivant fonctionnera:
mtcars %>% replace(is.na(.), 0)
Problème de référence: https://stackoverflow.com/a/45574804/8382207
J'ai trouvé un moyen de le faire fonctionner avec replace_na
comme demandé (car il s’agit de l’option la plus rapide via les tests microbenchmark):
library(tidyr)
library(dplyr)
# First, create a list of all column names and set to 0
myList <- setNames(lapply(vector("list", ncol(mtcars)), function(x) x <- 0), names(mtcars))
# Now use that list in tidyr::replace_na
mtcars %>% replace_na(myList)
Pour appliquer cela à votre cadre de données de travail, veillez à remplacer les 2 instances de mtcars
par le nom de votre cadre de données de travail lors de la création de l'objet myList
.
library(dplyr)
mydata <- mtcars
mydata[sample(1:nrow(mydata), 4), sample(1:ncol(mydata), 4)]<- NA
mydata %>% mutate_each(funs(replace(., is.na(.), 0)))