c'est ce que j'ai déjà fait jusqu'à présent les données sont de type numérique
if (is.na(data) || attribute==0){replace(data,NA)}
cela me donne un message d'erreur
Erreur de remplacement (attribut, NA): l'argument "valeurs" est manquant, sans valeur par défaut
4 Réponses :
En supposant que data est un dataframe , vous pouvez utiliser sapply pour mettre à jour vos valeurs en fonction d'un ensemble de filtres:
new.data = as.data.frame(sapply(data,FUN= function(x) replace(x,is.na(x) | x == 0)))
Avec mutate_all:
set.seed(123)
df <- data.frame(X = sample(0:5, 20, replace = TRUE),
Y = sample(0:5, 20, replace = TRUE),
Z = as.character(sample(0:5, 20, replace = TRUE)))
ou avec mutate_if pour être sûr:
> df %>%
+ mutate_all(~replace(., . == 0, NA))
X Y Z
1 1 5 <NA>
2 4 4 2
3 2 3 2
4 5 5 2
5 5 3 <NA>
6 NA 4 <NA>
7 3 3 1
8 5 3 2
9 3 1 1
10 2 NA 5
11 5 5 <NA>
12 2 5 2
13 4 4 4
14 3 4 <NA>
15 NA NA 3
16 5 2 1
17 1 4 <NA>
18 NA 1 4
19 1 1 5
20 5 1 2
> df %>%
+ mutate_if(is.numeric, ~replace(., . == 0, NA))
X Y Z
1 1 5 0
2 4 4 2
3 2 3 2
4 5 5 2
5 5 3 0
6 NA 4 0
7 3 3 1
8 5 3 2
9 3 1 1
10 2 NA 5
11 5 5 0
12 2 5 2
13 4 4 4
14 3 4 0
15 NA NA 3
16 5 2 1
17 1 4 0
18 NA 1 4
19 1 1 5
20 5 1 2
Notez qu'il n'est pas nécessaire de vérifier les NA , car nous remplaçons de toute façon par NA .
Résultat:
df %>% mutate_if(is.numeric, ~replace(., . == 0, NA))
library(dplyr) df %>% mutate_all(~replace(., . == 0, NA))
pouvez-vous s'il vous plaît me dire comment importer la bibliothèque dont vous parliez, car elle ne me permet pas d'utiliser mutate_all. Je le teste sur R_markdown
@jdfhf install.packages ('dplyr') puis library (dplyr) devrait vous donner la dernière version. Votre version de dplyr est probablement obsolète.
tidyr :: replace_na () fait exactement cela: https://tidyr.tidyverse.org /reference/replace_na.html
Vous pouvez simplement utiliser replace sans fonction / package supplémentaire:
df$data <- replace(df$data, df$data == 0, NA)
Ceci suppose maintenant que data est votre bloc de données .
Sinon, vous pouvez simplement insérer le nom de la colonne, par exemple si votre bloc de données est df et le nom de la colonne data:
data <- replace(data, data == 0, NA)
Vous n'utilisez pas correctement
replace. Voiraide (remplacer)