ifelse avec des factors

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

Julien Demeaux
Messages : 49
Enregistré le : 23 Oct 2017, 22:24

ifelse avec des factors

Messagepar Julien Demeaux » 29 Oct 2017, 00:17

J'ai un dataframe qui me donne des events et chacun d'entre eux est rattaché a une entité A ou B.
Le dataframe se présente ainsi (toutes les variables dont je parle ici sont des factors).

Code : Tout sélectionner

entité_1  entitè_2  event  entité_event
A             B      1        A
A             B      2        B
A             B      3        B
...


J'ai besoin d'ajouter une variable qui me dit quelle entité n'est pas impliquée.
Je fais

Code : Tout sélectionner

ifelse(entité_event == entité_1, entité_2, entité_1)

Le problème est que ça me donne le rang de l'entité (1 ou 2) et non pas son nom.
J'imagine qu'il me faut un ajouter un factor() quelque part mais je n'arrive pas à m'en sortir. Please help!!!
Merci :)

Bastien Gamboa
Messages : 151
Enregistré le : 13 Jan 2011, 21:31

Re: ifelse avec des factors

Messagepar Bastien Gamboa » 30 Oct 2017, 08:05

Bonjour,

Pour la majorité des questions il est préférable de créer un exemple minimaliste avec les données également minimalistes, le tout pouvant être copié directement dans R pour reproduire le problème. Ainsi il est plus facile pour tout le monde d'essayer de t'aider. Voir ici par exemple pour insérer un extrait des données : http://forums.cirad.fr/logiciel-R/viewtopic.php?f=1&t=3302

Dans ton cas, sauf particularité de tes données, l'exemple suivant devrait t'aider :

Code : Tout sélectionner

ifelse(c(1:10)<5, as.character(factor(letters)), as.character(factor(LETTERS)))

HTH,
Bastien

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

Re: ifelse avec des factors

Messagepar Logez Maxime » 30 Oct 2017, 08:22

Bonjour,

Pour la majorité des questions il est préférable de créer un exemple minimaliste avec les données également minimalistes, le tout pouvant être copié directement dans R pour reproduire le problème. Ainsi il est plus facile pour tout le monde d'essayer de t'aider.
Je partage cet avis, mais je ne vois pas ce qui pose problème ici puisque :

Code : Tout sélectionner

tab <- read.table("clipboard", h = T)
tab
  entité_1 entitè_2 event entité_event
1        A        B     1            A
2        A        B     2            B
3        A        B     3            B

Sinon en reprenant le code de Bastien appliqué à l'exemple donné :

Code : Tout sélectionner

inverse <- with(tab, ifelse(entité_event %in% entité_1, as.character(entitè_2), as.character(entité_1)))
inverse
[1] "B" "A" "A"
# une autre solution :
tab[cbind(1:nrow(tab),(tab$entité_event%in%tab$entité_1)+1)]
Cordialement,
Maxime

Julien Demeaux
Messages : 49
Enregistré le : 23 Oct 2017, 22:24

Re: ifelse avec des factors

Messagepar Julien Demeaux » 11 Nov 2017, 16:04

Bonjour,

Merci pour votre aide (et désolé de ne vous remercier que maintenant, j'ai eu qq soucis qui m'ont tenu à l'écart de R un moment).

Ca a fonctionné avec

Code : Tout sélectionner

inverse <- with(tab, ifelse(entité_event == entité_1, as.character(entitè_2), as.character(entité_1)))

Ca me rendait des résultats randomisés avec %in%


Retourner vers « Questions en cours »

Qui est en ligne

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