remplacement de valeur sous condition

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

Frédéric Hérault
Messages : 3
Enregistré le : 10 Jan 2008, 11:42

remplacement de valeur sous condition

Messagepar Frédéric Hérault » 16 Jan 2009, 14:45

Bonjour,

Je possède deux matrices de taille identique.

la première "a" contient des valeurs 1 ou 0

var1 var2 var3 var4
1 0 0 1 0
2 0 0 0 0
3 0 1 1 0
4 0 0 0 0
5 1 0 1 0
6 0 0 1 0
7 0 1 0 0

la deuxième "b" contient des données.

var1 var2 var3 var4
1 10 991 944 941
2 321 319 292 298
3 171 109 49 60
4 325 341 229 266
5 211 195 137 140
6 121 100 126 116
7 167 143 965 82


Je souhaite remplacer les valeurs de la matrice b(i,j) en fonction des valeurs de la matrice a(i,j).
Si a(i,j) = 1 alors b(i,j)=NA.

J'ai tout d'abord réaliser ceci par une boucle, mais mes matrice sont de grandes tailles et cela prend donc du temps.

Est ce qu'il existe une façons plus simple et pus rapide de le faire ??

Merci
Frédéric

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

Messagepar Logez Maxime » 16 Jan 2009, 14:58

Bonjour,

Code : Tout sélectionner

x
  var1 var2 var3 var4
1    0    0    1    0
2    0    0    0    0
3    0    1    1    0
4    0    0    0    0
5    1    0    1    0
6    0    0    1    0
7    0    1    0    0

y
  var1 var2 var3 var4
1   10  991  944  941
2  321  319  292  298
3  171  109   49   60
4  325  341  229  266
5  211  195  137  140
6  121  100  126  116
7  167  143  965   82

class(x)
[1] "matrix"
class(y)
[1] "matrix"

ifelse(x>0.5,NA,y)
  var1 var2 var3 var4
1   10  991   NA  941
2  321  319  292  298
3  171   NA   NA   60
4  325  341  229  266
5   NA  195   NA  140
6  121  100   NA  116
7  167   NA  965   82


Maxime

Frédéric Hérault
Messages : 3
Enregistré le : 10 Jan 2008, 11:42

Messagepar Frédéric Hérault » 16 Jan 2009, 15:06

Exactement ce que je voulais, je te remercie
Frédéric


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité