remplacer une valeur dans un tableau par des NA

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

thibaut imberdis
Messages : 2
Enregistré le : 19 Nov 2007, 18:13

remplacer une valeur dans un tableau par des NA

Messagepar thibaut imberdis » 24 Nov 2007, 14:23

Bonjour,
j'ai un tableau de données mais les valeurs NA sont notées avec une valeur -9 or je voudrai remplacer ce -9 par NA pour ne pas fausser mes calcul; or, -9 étant un chiffre négatif et étant un débutant sur R, je n'y arrive pas car il considère le signe - comme quelque chose qu'il faut retirer du tableau.
Je vous remercie d'avance de votre aide

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 24 Nov 2007, 18:33

Bonjour,


Cette question a déjà été posée sur le forum, n'hésite pas à te servir de la fonction recherche. Si ton tableau ne contient que des données numériques alors je te propose ceci :

Code : Tout sélectionner

ted <- matrix(rnorm(25),5)
ted[sample(1:25,5)] <- (-9)
ted <- as.data.frame(ted)

ted
           V1          V2        V3         V4         V5
1  0.26237702 -9.00000000 -1.669145  2.0889394  0.4251632
2 -0.80118044 -0.75604405  1.251471 -0.5324791 -9.0000000
3  0.06897011  0.02253645  1.944607 -0.1256625  0.3139512
4  0.49853669 -9.00000000 -1.318413  1.0786873  0.5860630
5 -0.08642096 -1.80121870 -9.000000 -9.0000000 -1.2190507

ted <-  sapply(ted,as.character)
ted <- ifelse(ted=="-9",NA,ted)
ted <- apply(ted,2,as.numeric)
ted
              V1          V2        V3         V4         V5
[1,]  0.26237702          NA -1.669145  2.0889394  0.4251632
[2,] -0.80118044 -0.75604405  1.251471 -0.5324791         NA
[3,]  0.06897011  0.02253645  1.944607 -0.1256625  0.3139512
[4,]  0.49853669          NA -1.318413  1.0786873  0.5860630
[5,] -0.08642096 -1.80121870        NA         NA -1.2190507


Après tu peux aussi retransformer cette matrice en un tableau avec un as.data.frame. Mais si tu n'as que des valeurs numériques alors je te conseille de conserver la matrice plus facile à manipuler que le tableau.

Si par contre tu n'as pas que des données numériques alors ça se complique un peu mais la démarche reste la même.

Maxime

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 24 Nov 2007, 18:43

Ce genre de question est abordé dans tous les documents de base sur R que je vous invite vivement à consulter. Il est facile d'en trouver de bons sur le web, y compris sur le CRAN.

D'autre part, cette question a été posée à multiples reprises sur ce forum. Utiliser la fonction Rechercher du forum. En faisant une recherche sur "Remplacer" on aboutit à http://forums.cirad.fr/logiciel-R/viewtopic.php?t=157.

Renaud

Marie-Pia Marchant
Messages : 3
Enregistré le : 02 Nov 2022, 17:01

Re: remplacer une valeur dans un tableau par des NA

Messagepar Marie-Pia Marchant » 03 Mai 2023, 14:56

Renaud Lancelot a écrit :Ce genre de question est abordé dans tous les documents de base sur R que je vous invite vivement à consulter. Il est facile d'en trouver de bons sur le web, y compris sur le CRAN.



D'autre part, cette question a été posée à multiples reprises sur ce forum. Utiliser la fonction Rechercher du forum. En faisant une recherche sur "Remplacer" on aboutit à http://forums.cirad.fr/logiciel-R/viewtopic.php?t=157.



Renaud


Alors je trouve que la question n'est pas du tout la même que le lien que tu as montré "http://forums.cirad.fr/logiciel-R/viewtopic.php?t=157" et perso j'ai la même question, c'est vraiment dans le sens remplacer les 0 par des NAs et pas l'inverse, ce qui est quand même plus facile avec is.na.

Enfin bref, j'ai la même question pour remplacer mes 0 par des Na dans mon dataframe, et je n'ai rien compris à la réponse de cette discussion. Je commence à devenir folle à ne pas trouver comment faire ^^' Donc si quelqu'un peut me sauver c'est avec grand plaisir ;)

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: remplacer une valeur dans un tableau par des NA

Messagepar Logez Maxime » 03 Mai 2023, 15:34

Bonjour,

plutôt que d'exhumer de vieux posts, il vaut mieux ouvrir de nouveaux fils de discussion.
La question reste similaire, ce qu'il te faut c'est d'établir une comparaison par rapport à 0 (et non par rapport à NA) et ensuite de remplacer par NA (au lieu de 0).
Par exemple :

Code : Tout sélectionner

dta <- as.data.frame(matrix(rbinom(30, 1, 0.5), 10))
dta[dta == 0] <- NA

Parfois la comparaison à 0 peut ne pas être parfaite à cause d'approximation numérique.
Dans ces cas là il vaut mieux se fixer un seuil de tolérance et établir la comparaison dessus :

Code : Tout sélectionner

dta <- as.data.frame(matrix(rbinom(30, 1, 0.5), 10))
dta[abs(dta-0)< 1e-12] <- NA

Cordialement,
Maxime


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité