condition et package dplyr

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

Charles Marcucci
Messages : 52
Enregistré le : 13 Juil 2016, 09:00

condition et package dplyr

Messagepar Charles Marcucci » 10 Aoû 2017, 08:08

Bonjour ,
j'aimerai utiliser le package dplyr pour traiter des donnes selon une condition.

*description des données*
J'ai un tableau avec des patients et j'ai 217 variables.
On va s’intéresser uniquement à quelques variables.
Chaque lignes correspond à un enregistrement de patient :
* Si le patient à reçu une seule immunothérapie il aura une seule ligne
* Si le patient reçoit 2 immunothérapies il aura deux lignes dans mon tableau.

Dans un premier temps j'ai crée une variable qui me signale le type de thérapeutique reçu, ma variable ligne qui peut prendre les valeurs suivantes "Ligne_unique_Ipilimumab", "Ligne_Unique_Pembrolizumab", "Cycle_Pembrolizumab_Ipilimumab" ou "Cycle_Ipilimumab_Pembrolizumab".

J'ai crée une variable clef_unique qui pour chaque patient donne le type de ligne associe a la référence du patient (si c'est un cycle la clef est la suivante type de ligne + la réference de la premiere ligne pour le patient)


Code : Tout sélectionner

Exemple<-data.frame(REF_NUMBER=1:7,ligne=c("Ligne_unique_Pembrolizumab","Ligne_unique_Ipilimumab","Ligne_unique_Ipilimumab","Cycle_Ipilimumab_Pembrolizumab","Cycle_Ipilimumab_Pembrolizumab","Cycle_Ipilimumab_Pembrolizumab","Cycle_Ipilimumab_Pembrolizumab"),Monotherapie=c("Non","Non","Oui","Oui","Oui","Non","Oui"),clef_unique=c(c("Ligne_unique_Pembrolizumab_1","Ligne_unique_Ipilimumab_2","Ligne_unique_Ipilimumab_3","Cycle_Ipilimumab_Pembrolizumab_4","Cycle_Ipilimumab_Pembrolizumab_4","Cycle_Ipilimumab_Pembrolizumab_6","Cycle_Ipilimumab_Pembrolizumab_6")))
> Exemple
  REF_NUMBER                          ligne Monotherapie                      clef_unique
1          1     Ligne_unique_Pembrolizumab          Non     Ligne_unique_Pembrolizumab_1
2          2        Ligne_unique_Ipilimumab          Non        Ligne_unique_Ipilimumab_2
3          3        Ligne_unique_Ipilimumab          Oui        Ligne_unique_Ipilimumab_3
4          4 Cycle_Ipilimumab_Pembrolizumab          Oui Cycle_Ipilimumab_Pembrolizumab_4
5          5 Cycle_Ipilimumab_Pembrolizumab          Oui Cycle_Ipilimumab_Pembrolizumab_4
6          6 Cycle_Ipilimumab_Pembrolizumab          Non Cycle_Ipilimumab_Pembrolizumab_6
7          7 Cycle_Ipilimumab_Pembrolizumab          Oui Cycle_Ipilimumab_Pembrolizumab_6


*Question*
j'aimerai utiliser le package dplyr pour cree une nouvelle variable "Incluable".
Elle serai égale à oui quand monothérapie = Oui
elle serai égale à non quand monothérapie=Non.
Pour les lignes avec une clefs unique en un seul exemplaire c'est bon c'est simple mais pour les lignes qui ont une clef unique similiaire je ne voit pas comment faire
En faite si l'une des deux lignes à un Non les deux lignes doivent avoir un non.

Le résultat attendu est le suivant

Code : Tout sélectionner

 REF_NUMBER                          ligne Monotherapie                      clef_unique Incluable
1          1     Ligne_unique_Pembrolizumab          Non     Ligne_unique_Pembrolizumab_1       Non
2          2        Ligne_unique_Ipilimumab          Non        Ligne_unique_Ipilimumab_2       Non
3          3        Ligne_unique_Ipilimumab          Oui        Ligne_unique_Ipilimumab_3       Oui
4          4 Cycle_Ipilimumab_Pembrolizumab          Oui Cycle_Ipilimumab_Pembrolizumab_4       Oui
5          5 Cycle_Ipilimumab_Pembrolizumab          Oui Cycle_Ipilimumab_Pembrolizumab_4       Oui
6          6 Cycle_Ipilimumab_Pembrolizumab          Non Cycle_Ipilimumab_Pembrolizumab_6       Non
7          7 Cycle_Ipilimumab_Pembrolizumab          Oui Cycle_Ipilimumab_Pembrolizumab_6       Non
>


Comment faire ?

Merci d'avance

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: condition et package dplyr

Messagepar Pierre-Yves Berrard » 10 Aoû 2017, 08:33

Bonjour,

Une solution et quelques explications :

Code : Tout sélectionner

Exemple %>%
  group_by(REF_NUMBER) %>%
  mutate(Incluable = all(Monotherapie == "Oui"))


  • dplyr::group_by indique un traitement différencié pour chaque REF_NUMBER
  • dplyr::mutate sert à créer une nouvelle variable
  • (all est une fonction de base)
PY

Charles Marcucci
Messages : 52
Enregistré le : 13 Juil 2016, 09:00

Re: condition et package dplyr

Messagepar Charles Marcucci » 10 Aoû 2017, 08:59

Merci beaucoup
c'est parfaitement ce que j’attendais avec le code

Code : Tout sélectionner

Exemple %>%
  group_by(clef_unique) %>%
  mutate(Incluable = all(Monotherapie == "Oui"))


Retourner vers « Questions en cours »

Qui est en ligne

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