Nouvelle colonne dataframe 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

Eric Vitalo
Messages : 4
Enregistré le : 08 Juil 2022, 08:29

Nouvelle colonne dataframe sous condition

Messagepar Eric Vitalo » 19 Juil 2022, 07:37

Bonjour,

Je souhaiterais remplir la colonne df$C, en fonction de la valeur contenu dans la colone df$B,
Soit pour df$B >6 ET $B df$B<=9, df$C vaut 1, sinon pour df$B >10 ET $B df$B<=12, df$C vaut 2, sinon df$C vaut NA

Code : Tout sélectionner

A<-c(1,2,3,4,5,6,7,8,9,10)
B<-c(9,10,5,6,4,8,10,11,12,15)
df<-cbind.data.frame(A,B)

df$C<-ifelse(df$B>=6 && df$B<=9,"1",
                ifelse(df$B>=10 && df$B<=12,"2",""))


Visiblement il y a quelque chose qui ne fonctionne pas dans ce que j'ai écris si dessus, une idée de ce qui bloque ?

Merci d'avance !!

Fred Santos
Messages : 233
Enregistré le : 11 Avr 2009, 10:00
Contact :

Re: Nouvelle colonne dataframe sous condition

Messagepar Fred Santos » 19 Juil 2022, 07:48

Bonjour,

Remplacez simplement vos && par des &. Notez la différence entre

Code : Tout sélectionner

df$B > 6 & df$B <= 9
#> [1]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
#> [10] FALSE  

et

Code : Tout sélectionner

df$B > 6 && df$B <= 9
#> [1] TRUE
#> Messages d'avis :
#> 1: Dans df$B > 6 && df$B <= 9 :
#>  ‘length(x) = 10 > 1’ dans la conversion automatique vers ‘logical(1)’
#> 2: Dans df$B > 6 && df$B <= 9 :
#>  ‘length(x) = 10 > 1’ dans la conversion automatique vers ‘logical(1)’  

Il ne faut pas utiliser && lorsque la comparaison porte sur des vecteurs.

Bon courage !

Eric Vitalo
Messages : 4
Enregistré le : 08 Juil 2022, 08:29

Re: Nouvelle colonne dataframe sous condition

Messagepar Eric Vitalo » 19 Juil 2022, 14:30

Merci ! Effectivement c'était si simple que ça !


Retourner vers « Questions en cours »

Qui est en ligne

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