recherche/remplacer dans un dataframe

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

Benjamin Naffrechoux
Messages : 6
Enregistré le : 03 Juil 2017, 09:01

recherche/remplacer dans un dataframe

Messagepar Benjamin Naffrechoux » 15 Jan 2020, 13:03

Bonjour,
je pose cette question pour savoir si il existe quelque chose de plus "sexy" que ce que j'ai fait. En fait, j'ai un dataframe et j'aimerais rechercher toute les cellules prenant une certaine valeur (pour la remplacer par une autre).
Mon soucis: je n'arrive pas à faire ça en une seule ligne à partir du moment où je recherche dans plusieurs colonnes.
Voilà mon script actuel, pour visualiser le problème:

Code : Tout sélectionner

sample[-c(1,2,44)][sample[-c(1,2,44)] ==3]=NA
sample[-c(1,2,44)][sample[-c(1,2,44)] ==4]=NA
sample[-c(1,2,44)][sample[-c(1,2,44)] ==5]=NA
sample[-c(1,2,44)][sample[-c(1,2,44)] ==6]=NA
sample[-c(1,2,44)][sample[-c(1,2,44)] ==7]=NA

Dans mon dataframe "sample", je cherche donc les valeurs c(3,4,5,6,7) pour les remplacer par "NA".
Mon but: réaliser cela sur une seule ligne.
Je en sais pas pourquoi mais le %in% c(3,...,7) ne marche pas, ni le ifelse() (que j'utilise peut être mal).
Avez-vous des suggestions pour mettre mon code sur une ligne et de façon R-friendly (j'imagine que boucler sur les lignes puis les colonnes du df marcherait, mais je cherche qqch de plus 'vectoriel').

Merci

François Bonnot
Messages : 537
Enregistré le : 10 Nov 2004, 15:19
Contact :

Re: recherche/remplacer dans un dataframe

Messagepar François Bonnot » 15 Jan 2020, 15:49

Bonjour,
Pour le remplacement dans toutes les colonnes du data frame df :

Code : Tout sélectionner

data.frame(lapply(df,function(x) { x[x %in% 3:7] <- NA ; x }))
François

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

Re: recherche/remplacer dans un dataframe

Messagepar Logez Maxime » 15 Jan 2020, 20:42

Bonjour,

une alternative :

Code : Tout sélectionner

df[]<-lapply(df, function(x) {x[x%in%3:7] <- NA; x})
Cordialement,
Maxime

Benjamin Naffrechoux
Messages : 6
Enregistré le : 03 Juil 2017, 09:01

Re: recherche/remplacer dans un dataframe

Messagepar Benjamin Naffrechoux » 16 Jan 2020, 16:46

Parfait merci beaucoup! (ça devait juste être le c(3:7) qui devait coincer de mon côté,bizarre...)


Retourner vers « Questions en cours »

Qui est en ligne

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