Modérateur : Groupe des modérateurs
Code : Tout sélectionner
CETGratio_mean$SSF <- factor(CETGratio_mean$SSF, levels = as.character(CETGratio_mean$SSF))
xyplot(D0 + D6 + D42 + D180 ~ SSF, data = CETGratio_mean, type = "b", auto.key = TRUE)
Code : Tout sélectionner
# soit tab ton data.frame de données
tab2 <- tab %>% group_by(Time_Point) %>% summarise_each(funs(mean)) %>%
gather(lipoprotein, ce, -Time_Point)
tab2$lipoprotein <- factor(tab2$lipoprotein, levels = unique(tab2$lipoprotein))
ggplot(tab2, aes(lipoprotein, ce, group = Time_Point, col = Time_Point)) + geom_path() + geom_point()
Code : Tout sélectionner
library(tidyr)
library(dplyr)
library(ggplot2)
ordre<-c("VLDL","LDL1","LDL2","LDL3" ,"LDL4","LDL5","HDL2b","HDL2a","HDL3a","HDL3b","HDL3c")
tab2<-tab %>% gather(Lipo,Subfraction,-Time_Point) %>% group_by(Time_Point,Lipo) %>% summarise(moy=mean(Subfraction)) %>% mutate(Lipo = factor(Lipo, levels = ordre)) %>% arrange(Lipo)
ggplot(tab2, aes(Lipo, moy, group = Time_Point, col = Time_Point)) + geom_path() + geom_point()
Logez Maxime a écrit :Bonjour,
avec dplyr, tidyr et ggplot2 :Cordialement,Code : Tout sélectionner
# soit tab ton data.frame de données
tab2 <- tab %>% group_by(Time_Point) %>% summarise_each(funs(mean)) %>%
gather(lipoprotein, ce, -Time_Point)
tab2$lipoprotein <- factor(tab2$lipoprotein, levels = unique(tab2$lipoprotein))
ggplot(tab2, aes(lipoprotein, ce, group = Time_Point, col = Time_Point)) + geom_path() + geom_point()
Maxime
Code : Tout sélectionner
CETGratio<-read.table("D:/LABO/CAPITAIN/CAPITAIN_FichiersR/CAPITAIN_CE_TG_Ratio_ssf.txt" ,header =TRUE)#importation de mes données dans R
CETGratio
Number Patient Time_Point VLDL LDL1 LDL2 LDL3 LDL4 LDL5 HDL2b HDL2a HDL3a
1 1 THOLA D0 0.32 1.70 3.37 6.18 9.92 7.77 4.76 3.42 7.75
2 3 GANLA D0 0.60 0.98 2.90 3.88 5.40 4.78 2.15 2.08 2.26
3 4 DELFR D0 0.33 1.21 2.95 11.23 9.15 4.88 3.69 4.60 5.11
4 5 JAVJE D0 0.29 0.48 1.97 3.13 4.75 2.54 3.89 4.01 4.21
5 6 ZAFBR D0 0.30 0.57 1.25 4.02 5.10 2.54 1.50 1.87 2.55
6 7 GUTMA D0 0.33 0.61 1.31 3.53 4.20 1.98 1.22 1.41 1.78
7 8 COUJE D0 0.41 0.85 2.66 5.10 3.07 2.24 2.09 3.35 3.63
8 9 ABRGI D0 0.60 0.96 1.70 3.66 4.26 3.00 1.80 2.53 2.74
9 10 CHABO D0 0.33 0.84 2.71 5.92 4.30 1.98 1.73 3.05 4.05
10 11 DAGEI D0 0.36 0.65 1.08 2.44 4.45 1.79 0.66 1.13 1.76
11 13 BRAJO D0 0.31 0.53 1.34 1.70 1.94 3.78 1.14 1.68 2.04
12 14 ALBMI D0 0.58 0.74 1.91 4.72 4.91 1.63 1.56 2.01 2.85
13 1 THOLA D6 0.25 1.02 3.18 3.54 9.14 7.07 4.94 3.28 3.93
14 3 GANLA D6 0.45 1.39 2.94 5.22 6.66 5.60 2.96 3.92 3.43
15 4 DELFR D6 0.23 1.03 3.10 7.91 6.75 4.98 5.89 9.58 11.16
16 5 JAVJE D6 0.26 0.78 2.07 4.58 8.07 5.28 3.27 5.12 5.34
17 6 ZAFBR D6 0.30 0.45 1.09 3.88 4.17 2.07 1.41 2.57 2.70
18 7 GUTMA D6 0.35 0.60 1.13 3.08 6.03 3.70 2.26 3.23 4.08
19 8 COUJE D6 0.27 0.85 2.60 5.37 4.00 2.98 2.92 3.67 4.75
20 9 ABRGI D6 0.41 1.19 2.02 4.73 7.65 5.48 4.00 4.78 5.76
21 10 CHABO D6 0.20 0.33 1.09 3.88 3.84 2.97 3.42 4.94 4.64
22 11 DAGEI D6 0.27 0.40 0.80 2.74 5.17 1.16 1.22 1.58 2.12
23 13 BRAJO D6 0.23 0.35 0.57 1.61 3.30 3.18 1.43 2.87 3.83
24 14 ALBMI D6 0.37 0.46 1.07 3.06 5.14 1.95 2.06 2.99 3.97
25 1 THOLA D42 0.29 0.89 4.24 4.29 9.03 5.86 3.27 3.18 3.52
26 3 GANLA D42 0.23 0.68 3.27 4.88 6.27 3.09 2.91 3.19 3.51
27 4 DELFR D42 0.16 0.69 1.43 5.35 4.22 2.66 4.64 6.13 6.31
28 5 JAVJE D42 0.26 0.71 2.01 5.76 7.53 4.18 4.67 6.90 6.81
29 6 ZAFBR D42 0.25 0.60 2.13 7.29 5.69 3.10 3.25 4.41 5.39
30 7 GUTMA D42 0.33 0.62 1.09 3.38 6.45 3.91 2.11 2.65 3.39
31 8 COUJE D42 0.35 0.64 1.30 1.03 2.94 2.00 2.65 3.75 5.03
32 9 ABRGI D42 0.30 0.50 1.15 4.01 6.64 4.53 4.20 4.89 5.25
33 10 CHABO D42 0.27 0.24 3.94 3.87 5.27 3.44 3.94 5.36 6.94
34 11 DAGEI D42 0.23 0.22 0.52 1.27 4.06 3.75 1.28 1.29 1.82
35 13 BRAJO D42 0.26 0.59 1.57 2.19 4.36 1.80 2.28 3.09 4.27
36 14 ALBMI D42 0.45 0.58 1.83 4.88 7.45 3.86 3.21 3.92 4.63
37 1 THOLA D180 0.24 0.74 2.25 5.23 8.84 4.84 3.72 3.09 3.65
38 3 GANLA D180 0.28 1.05 2.93 4.89 5.29 5.14 3.13 3.51 3.77
39 4 DELFR D180 0.17 0.63 2.44 6.03 4.74 3.23 6.80 7.43 10.20
40 5 JAVJE D180 0.25 0.53 1.34 5.38 6.31 3.31 3.39 5.99 7.70
41 6 ZAFBR D180 0.31 0.49 1.75 6.33 6.10 3.99 3.08 3.47 3.36
42 7 GUTMA D180 0.27 0.55 1.04 2.38 4.97 3.37 2.45 2.53 3.23
43 8 COUJE D180 0.33 0.73 1.71 4.90 3.87 3.58 3.95 5.52 7.54
44 9 ABRGI D180 0.43 1.02 2.26 6.89 8.75 5.79 6.11 6.80 8.57
45 10 CHABO D180 0.30 0.69 1.19 1.94 4.30 2.36 1.60 3.11 4.14
46 11 DAGEI D180 0.25 0.36 1.15 4.09 9.35 3.94 3.66 3.39 4.25
47 13 BRAJO D180 0.25 0.52 1.32 2.99 6.32 3.00 2.50 4.18 5.40
48 14 ALBMI D180 0.48 0.54 1.62 6.04 6.29 3.40 3.86 5.19 5.67
HDL3b HDL3c HDL3c2 BOTTOM
1 4.06 2.43 2.89 0.39
2 1.39 2.17 3.21 0.36
3 5.26 5.20 8.12 0.43
4 3.63 1.93 7.30 0.38
5 2.01 1.85 2.21 2.42
6 1.46 1.11 1.24 0.99
7 3.66 2.95 2.51 3.41
8 2.21 1.49 1.38 1.47
9 3.44 2.30 1.08 1.35
10 1.23 0.90 0.75 0.55
11 1.18 0.78 0.90 0.95
12 2.19 2.00 2.21 1.27
13 4.50 3.88 5.14 0.31
14 4.02 1.56 1.72 0.37
15 9.12 18.58 5.11 0.86
16 7.28 1.32 4.93 0.53
17 2.50 1.68 2.20 1.32
18 3.51 2.23 1.54 1.28
19 4.27 3.56 2.90 1.22
20 4.90 4.78 3.69 1.67
21 5.28 2.94 1.80 0.86
22 1.71 0.98 0.76 0.33
23 3.75 1.96 2.37 1.42
24 3.64 3.17 3.60 1.15
25 2.13 1.26 2.25 0.34
26 3.76 2.79 1.89 0.23
27 8.70 2.04 3.45 0.74
28 7.60 4.48 8.15 0.19
29 5.15 4.93 2.94 1.60
30 3.23 3.08 2.19 1.06
31 5.01 3.72 2.12 3.26
32 5.76 5.19 5.78 1.97
33 6.74 5.99 3.23 1.41
34 1.90 1.51 1.18 0.47
35 3.93 4.23 3.21 2.66
36 5.49 4.74 7.40 2.65
37 3.60 2.36 2.10 0.31
38 3.47 3.55 2.31 0.35
39 9.45 4.54 3.16 0.46
40 7.83 13.06 7.36 -0.16
41 4.22 3.14 2.37 1.39
42 3.13 2.25 1.97 1.19
43 6.63 5.64 4.40 3.08
44 6.80 6.87 7.19 1.97
45 3.02 1.74 0.81 0.99
46 4.41 4.11 3.73 0.23
47 4.07 2.62 3.59 1.83
48 4.76 5.85 12.11 1.67
CETGratio_W<-CETGratio[which(CETGratio$Time_Point=="D0"|CETGratio$Time_Point=="D6"|CETGratio$Time_Point=="D42"|CETGratio$Time_Point=="D180"),c(2:4)] #on sélectionne les valeurs pour D0, D6, D42 et D180 pour les ssf VLDL+IDL et LDL1 à LDL5 et HDL2b à HDL3c et on obtient un data frame de travail
CETGratio_W
Patient Time_Point VLDL
1 THOLA D0 0.32
2 GANLA D0 0.60
3 DELFR D0 0.33
4 JAVJE D0 0.29
5 ZAFBR D0 0.30
6 GUTMA D0 0.33
7 COUJE D0 0.41
8 ABRGI D0 0.60
9 CHABO D0 0.33
10 DAGEI D0 0.36
11 BRAJO D0 0.31
12 ALBMI D0 0.58
13 THOLA D6 0.25
14 GANLA D6 0.45
15 DELFR D6 0.23
16 JAVJE D6 0.26
17 ZAFBR D6 0.30
18 GUTMA D6 0.35
19 COUJE D6 0.27
20 ABRGI D6 0.41
21 CHABO D6 0.20
22 DAGEI D6 0.27
23 BRAJO D6 0.23
24 ALBMI D6 0.37
25 THOLA D42 0.29
26 GANLA D42 0.23
27 DELFR D42 0.16
28 JAVJE D42 0.26
29 ZAFBR D42 0.25
30 GUTMA D42 0.33
31 COUJE D42 0.35
32 ABRGI D42 0.30
33 CHABO D42 0.27
34 DAGEI D42 0.23
35 BRAJO D42 0.26
36 ALBMI D42 0.45
37 THOLA D180 0.24
38 GANLA D180 0.28
39 DELFR D180 0.17
40 JAVJE D180 0.25
41 ZAFBR D180 0.31
42 GUTMA D180 0.27
43 COUJE D180 0.33
44 ABRGI D180 0.43
45 CHABO D180 0.30
46 DAGEI D180 0.25
47 BRAJO D180 0.25
48 ALBMI D180 0.48
CETGratio_W_mean <- CETGratio_W %>% group_by(Time_Point) %>% summarise_each(funs(mean)) %>% gather(lipoprotein, ce, -Time_Point)
Error in gather(., lipoprotein, ce, -Time_Point) :
impossible de trouver la fonction "gather"
De plus : Warning messages:
1: In mean.default(c(11L, 8L, 7L, 10L, 12L, 9L, 5L, 1L, 4L, 6L, 3L, :
argument is not numeric or logical: returning NA
2: In mean.default(c(11L, 8L, 7L, 10L, 12L, 9L, 5L, 1L, 4L, 6L, 3L, :
argument is not numeric or logical: returning NA
3: In mean.default(c(11L, 8L, 7L, 10L, 12L, 9L, 5L, 1L, 4L, 6L, 3L, :
argument is not numeric or logical: returning NA
4: In mean.default(c(11L, 8L, 7L, 10L, 12L, 9L, 5L, 1L, 4L, 6L, 3L, :
argument is not numeric or logical: returning NA
Code : Tout sélectionner
#en R standard
Somme1_5<-sum(1:5)
#avec %>%
Somme1_5<-1:5 %>% sum()
Code : Tout sélectionner
#en R standard
rac_sum_1_5<-sqrt(sum(1:5))
#avec %>%
Somme1_5<-1:5 %>% sum() %>% sqrt()
Code : Tout sélectionner
library(tidyr) # chargement du package tidyr nécessaire pour la fonction gather
library(dplyr) # chargement du package dplyr, pour les fonctions mutate, summarise group_by et arrange
library(ggplot2) #chargement du package graphique ggplot2 qui ajoute un nouveau mode graphique à R
#création d'un vecteur pour s'assurer de l'ordre d'affichage des valeurs pour le graphique
ordre<-c("VLDL","LDL1","LDL2","LDL3" ,"LDL4","LDL5","HDL2b","HDL2a","HDL3a","HDL3b","HDL3c")
#on transforme le data frame d'entrée du format large (en colonne) vers un format long (en ligne) grâce à la fonction gather
tmp1<-tab %>% gather(Lipo,Subfraction,-Time_Point)
#on calcul les moyennes pour chaqueTime_Point et Lipo
tmp2<-tmp1 %>% group_by(Time_Point,Lipo) %>% summarise(moy=mean(Subfraction))
#on transforme la colonne Lipo et on met les facteurs dans l'ordre voulu pour le graphique
tab2<-tmp2 %>% mutate(Lipo = factor(Lipo, levels = ordre)) %>% arrange(Lipo)
#on trace le graphique
ggplot(tab2, aes(Lipo, moy, group = Time_Point, col = Time_Point)) + geom_path() + geom_point()
Code : Tout sélectionner
tmp <- tab %>% select(-Number,-Patient)
tmp1<-tmp %>% gather(Lipo,Subfraction,-Time_Point)
Serge Rapenne a écrit :Bonjour,
Les commandes proposées utilisent la commande %>% (qui vient du package maggritr) et est inclus dans le package dplyr qui change significativement la logique de base dans R. Cette commande appelé redirection ("pipe" en anglais d’où le jeu de mot pour le nom du package maggritr) permet d'envoyer la sortie d'une commande vers une autre commande.
Par ex pour calculer la somme des 5 1er entiers, on écriraitcela peut sembler anecdotique au premier abord mais ça permet selon moi une lecture bien plus facile du code lorsque l'on veut enchainer des fonctions.Code : Tout sélectionner
#en R standard
Somme1_5<-sum(1:5)
#avec %>%
Somme1_5<-1:5 %>% sum()
par ex si on veut calculer la racine carré de la somme des entiers de 1 à 5Code : Tout sélectionner
#en R standard
rac_sum_1_5<-sqrt(sum(1:5))
#avec %>%
Somme1_5<-1:5 %>% sum() %>% sqrt()
avec %>% il suffit de lire de la gauche vers la droite ce qui est fait, sans on doit lire les chose "à l'envers" ce qui me semble moins intuitif.
Pour revenir au code proposé voici le détail de celui que j'ai proposé (je te laisse en exercice la compréhension de celui de Maxime qui est un peu différent).
il est indispensable au préalable d'installer les packages tidyr, dplyr et ggplotCode : Tout sélectionner
library(tidyr) # chargement du package tidyr nécessaire pour la fonction gather
library(dplyr) # chargement du package dplyr, pour les fonctions mutate, summarise group_by et arrange
library(ggplot2) #chargement du package graphique ggplot2 qui ajoute un nouveau mode graphique à R
#création d'un vecteur pour s'assurer de l'ordre d'affichage des valeurs pour le graphique
ordre<-c("VLDL","LDL1","LDL2","LDL3" ,"LDL4","LDL5","HDL2b","HDL2a","HDL3a","HDL3b","HDL3c")
#on transforme le data frame d'entrée du format large (en colonne) vers un format long (en ligne) grâce à la fonction gather
tmp1<-tab %>% gather(Lipo,Subfraction,-Time_Point)
#on calcul les moyennes pour chaqueTime_Point et Lipo
tmp2<-tmp1 %>% group_by(Time_Point,Lipo) %>% summarise(moy=mean(Subfraction))
#on transforme la colonne Lipo et on met les facteurs dans l'ordre voulu pour le graphique
tab2<-tmp2 %>% mutate(Lipo = factor(Lipo, levels = ordre)) %>% arrange(Lipo)
#on trace le graphique
ggplot(tab2, aes(Lipo, moy, group = Time_Point, col = Time_Point)) + geom_path() + geom_point()
tu pourras suivre l'évolution des données en regardant ce que contient tmp1, tmp2 et tab2
avec le jeu de données complet que tu fournis dans ton dernier message, il faut supprimer les colonnes Number et Patient ce qui peut etre fait en modifiant le debut du scriptCode : Tout sélectionner
tmp <- tab %>% select(-Number,-Patient)
tmp1<-tmp %>% gather(Lipo,Subfraction,-Time_Point)
pour des détails sur l'utilisation de dplyr : https://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html
pour tidyr et donc gather : https://blog.rstudio.org/2014/07/22/introducing-tidyr/
et pour ggplot : https://bioinfo-fr.net/guide-de-demarrage-pour-ggplot2-un-package-graphique-pour-r
Bonne lecture ;-)
Serge
Eric Wajnberg a écrit :Juste une question qui provient de ma curiosité. Pourquoi vouloir des courbes lissées ? Juste pour faire joli ? Excel raffole de ce type de lissage (option par défaut) qui ne présente selon moi aucun intérêt, d'autant plus qu'on ne sais rien des fonctions de lissage utilisées. Ca n'a rien de très scientifique, je pense.
Mais bon, juste une remarque en passant..
Eric.
Retourner vers « Questions en cours »
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité