Syntaxe R

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

Patricia OBEID
Messages : 68
Enregistré le : 10 Avr 2017, 19:03

Syntaxe R

Messagepar Patricia OBEID » 18 Mar 2018, 08:31

Bonjour,
Je fais appel à vous car je ne sais pas comment écrire ce que je souhaite faire ...
J'ai un dataframe contenant les données pour des analyses faites sur 2 gènes (SREBF et FADS2) avec 3 types de traitement (NT, TA et TB).
J'ai deux colonnes de résultats "DeltaCt" et "DCtMoy".
Chaque traitement a été analysé 3 fois.
Je voudrais faire la soustraction pour chaque gène de la valeurs DCtMoy de l'échantillon "NT" uniquement de ce gène.
Dans le df joint, cela correspondrait à oter 7.451 aux 9 premières lignes puis 4.128 aux 9 lignes suivantes.
Je cherche donc à écrire :
df$DDeltaCt <- df$DeltaCt - (dfDCtRefMoy du traitement NT du gène considéré)
mais je ne trouve pas la bonne syntaxe ... :-(

Voici donc mon dataframe ;

Code : Tout sélectionner

df<- structure(list(Samples2 = c("NT", "NT", "NT", "TA", "TA", "TA",
"TB", "TB", "TB", "NT", "NT", "NT", "TA", "TA", "TA", "TB", "TB",
"TB"), TheGene = c("SREBF", "SREBF", "SREBF", "SREBF", "SREBF",
"SREBF", "SREBF", "SREBF", "SREBF", "FADS2", "FADS2", "FADS2",
"FADS2", "FADS2", "FADS2", "FADS2", "FADS2", "FADS2"), DeltaCt = c(7.48,
7.52, 7.355, 8.2, 8.09, 8.35, 7.875, 7.66, 7.745, 4.35, 4.045,
3.99, 4.44, 4.285, 4.44, 3.975, 3.93, 3.95), DCtMoy = c(7.451666667,
7.451666667, 7.451666667, 8.213333333, 8.213333333, 8.213333333,
7.76, 7.76, 7.76, 4.128333333, 4.128333333, 4.128333333, 4.388333333,
4.388333333, 4.388333333, 3.951666667, 3.951666667, 3.951666667
)), .Names = c("Samples2", "TheGene", "DeltaCt", "DCtMoy"), class = "data.frame", row.names = c(NA,
-18L))


Je vous remercie d'avance pour votre aide.
Patricia

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

Re: Syntaxe R

Messagepar Pierre-Yves Berrard » 19 Mar 2018, 16:29

Bonjour,

Une solution en utilisant un appariement (merge) :

Code : Tout sélectionner

moy_NT <-
  aggregate(
    data = df[df$Samples2 == "NT", ],
    DeltaCt ~ TheGene,
    FUN = mean
  )

res <-
  merge(
    df,
    moy_NT,
    by = "TheGene",
    all.x = TRUE,
    suffixes = c("", "_MoyNT")
  )

res$DDeltaCt <- res$DeltaCt - res$DeltaCt_MoyNT
PY

Patricia OBEID
Messages : 68
Enregistré le : 10 Avr 2017, 19:03

Re: Syntaxe R

Messagepar Patricia OBEID » 19 Mar 2018, 19:57

Bonsoir Pierre-Yves
je n'ai pas eu le temps de tester ta solution ce soir mais je crois que ça ne correspond pas tout à fait à ce que je souhaite.
Dans l'exemple joint à mon message, il y a 2 gènes différents.
Je souhaite calculer le Delta Ct Moyen du traitement NT de chaque gène (et pas la moyenne de tous les NT) puis le soustraire du Delta Ct de chaque traitement...
Merci de ton aide
Patricia

Patricia OBEID
Messages : 68
Enregistré le : 10 Avr 2017, 19:03

Re: Syntaxe R

Messagepar Patricia OBEID » 20 Mar 2018, 08:18

Toutes mes excuses Pierre-Yves,
ça correspond exactement à ce que je veux.
J'avais mal anticipé ce que donnerait ta 1ère ligne de code "moy_NY"...
C'est la deuxième partie de l'expression qui me déroute : DeltaCt ~ TheGene.
Peux tu expliciter le "~" s'il te plait ?
Merci beaucoup pour ton aide.
Bonne journée,
Patricia

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

Re: Syntaxe R

Messagepar Pierre-Yves Berrard » 23 Mar 2018, 09:02

C'est une formule qui sert à spécifier sur quelle variable d'intérêt (ici DeltaCt) on veut appliquer une fonction (ici mean) selon quelles variables de regroupement (ici TheGene). Voir l'aide de la fonction aggregate (en particulier l'argument formula).
PY


Retourner vers « Questions en cours »

Qui est en ligne

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