Ifelse : comment conserver une partie des valeurs d'origine?

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

Arnaud-Felix Miailhe
Messages : 4
Enregistré le : 06 Déc 2023, 13:04

Ifelse : comment conserver une partie des valeurs d'origine?

Messagepar Arnaud-Felix Miailhe » 07 Déc 2023, 14:05

Bonjour,

J'ai un dataset avec des valeurs réparties entre -5 et +5.
Je cherche sur ce dataset à convertir les valeur > 0 en 0 et à conserver les autres valeurs tel quelles.
J'essaie pour cela la fonction Ifelse. Je n'ai pas de problème pour convertir les valeur >0 en 0, mais je n'arrive pas a conserver les anciennes valeur.

exemple:

jo<- tibble(x = c(1, 2, -2, -3), y = c(-5, -5, -4, -2), z = c(-1, 0, 0, 2))

je <- ifelse(jo < 0, 0, jo)

Dans ce cas le tableau final est un grand mixe de données!

Merci de votre aide.

Arnaud-Félix

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

Re: Ifelse : comment conserver une partie des valeurs d'origine?

Messagepar Logez Maxime » 07 Déc 2023, 20:52

Bonjour,

Le souci vient de l'utilisation du ifelse sur un tibble. Normalement c'est plutôt fait pour un vecteur, donc plutôt l'appliquer colonne par colonne (il est toujours plus efficace en R de travailler par colonne que par ligne).

Code : Tout sélectionner

jo <- o %>%
  mutate_all(~ifelse(. > 0, 0 , .))
 
Mais le plus simple dans un cas comme celui-ci c'est encore ceci :

Code : Tout sélectionner

jo[jo>0] <- 0

Bien cordialement,
Maxime

Arnaud-Felix Miailhe
Messages : 4
Enregistré le : 06 Déc 2023, 13:04

Re: Ifelse : comment conserver une partie des valeurs d'origine?

Messagepar Arnaud-Felix Miailhe » 08 Déc 2023, 10:42

Un grand merci pour ta réponse qui me permets d'avancer. Il est vrai que ta deuxième solution est très efficace.

Bonne journée,

Arnaud-Félix


Retourner vers « Questions en cours »

Qui est en ligne

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

cron