Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
r_hadleyverse_fr [2016/11/09 18:42]
xaviergb [Exemple montrant comment utiliser les formats long et large avec le jeu de données airquality]
r_hadleyverse_fr [2016/11/09 22:24] (current)
xaviergb [Atelier 3: Introduction à ggplot2, tidyr & dplyr]
Line 14: Line 14:
 Lien vers la présentation Prezi associée : [[http://​prezi.com/​c8w7zdbfv0ap/​|Prezi]] Lien vers la présentation Prezi associée : [[http://​prezi.com/​c8w7zdbfv0ap/​|Prezi]]
  
-Téléchargez le script R pour cet atelier : [[http://​qcbs.ca/​wiki/​_media/​ggplot.r|Script]] +Téléchargez le script R pour cet atelier : {{:atelier3.r|Script}}
 ===== 1. Tracer des graphiques avec R en utilisant la grammaire des graphiques (ggplot2) ===== ===== 1. Tracer des graphiques avec R en utilisant la grammaire des graphiques (ggplot2) =====
  
Line 812: Line 811:
 On peut aussi utiliser le format long pour créer un graphique qui inclut **toutes les variables sur un seul panneau** : On peut aussi utiliser le format long pour créer un graphique qui inclut **toutes les variables sur un seul panneau** :
 <code rsplus | > <code rsplus | >
-meteo2 <- ggplot(air.long,​ aes(x=Day, y=value, colour=variable)) ++meteo2 <- ggplot(air.long,​ aes(x = Day, y = value, colour = variable)) +
     geom_point() +      geom_point() + 
-    facet_wrap(~Month,​ nrow=1)+    facet_wrap(~Month,​ nrow = 1)
 meteo2 meteo2
 </​code>​ </​code>​
Line 915: Line 914:
  
 <code rsplus | > <code rsplus | >
-air_mess ​<- sample_frac(airquality,​ 1) +air_degat ​<- sample_frac(airquality,​ 1) 
-> head(air_mess)+> head(air_degat)
     Ozone Solar.R Wind Temp Month Day     Ozone Solar.R Wind Temp Month Day
 21      1       ​8 ​ 9.7   ​59 ​    ​5 ​ 21 21      1       ​8 ​ 9.7   ​59 ​    ​5 ​ 21
Line 929: Line 928:
  
 <code rsplus | > <code rsplus | >
-> air_chron <- arrange(air_mess, Month, Day)+> air_chron <- arrange(air_degat, Month, Day)
 > head(air_chron) > head(air_chron)
   Ozone Solar.R Wind Temp Month Day   Ozone Solar.R Wind Temp Month Day
Line 1003: Line 1002:
  
 <code rsplus | > <code rsplus | >
-month_sum ​<- airquality %>​% ​+mois_moy ​<- airquality %>​% ​
       group_by(Month) %>​% ​       group_by(Month) %>​% ​
       summarise(mean_temp = mean(Temp),       summarise(mean_temp = mean(Temp),
-                sd_temp = sd(Temp)) +                sd_temp = sd(Temp))  
-> month_sum+mois_moy
 Source: local data frame [5 x 3] Source: local data frame [5 x 3]
  
Line 1026: Line 1025:
 ++++Solution| ​ ++++Solution| ​
 <code rsplus | > <code rsplus | >
-weight_diff ​<- ChickWeight %>​% ​+mass_diff ​<- ChickWeight %>​% ​
      ​group_by(Chick) %>​% ​      ​group_by(Chick) %>​% ​
-     ​summarise(weight_diff ​= max(weight) - min(weight)) +     ​summarise(mass_diff ​= max(weight) - min(weight)) 
-weight_diff+mass_diff
 Source: local data frame [50 x 2] Source: local data frame [50 x 2]
  
Line 1049: Line 1048:
 Notez qu'ici on mesure simplement la différence de masse entre le maximum et le minimum. Il ne s'agit donc pas de la différence de masse entre le début et la fin de l'​étude (différence en ordre chronologique de la masse). Inspectez de plus près les observations liées au poussin # 18 : Notez qu'ici on mesure simplement la différence de masse entre le maximum et le minimum. Il ne s'agit donc pas de la différence de masse entre le début et la fin de l'​étude (différence en ordre chronologique de la masse). Inspectez de plus près les observations liées au poussin # 18 :
 <code rsplus | > <code rsplus | >
-chick_18 ​<- ChickWeight %>% filter(Chick == 18) +poussin_18 ​<- ChickWeight %>% filter(Chick == 18) 
-chick_18+poussin_18
   weight Time Chick Diet   weight Time Chick Diet
 1     ​39 ​   0    18    1 1     ​39 ​   0    18    1
Line 1074: Line 1073:
 ++++Solution| ​ ++++Solution| ​
 <code rsplus | > <code rsplus | >
-diet_summ ​<- ChickWeight %>​% ​+diet_mass ​<- ChickWeight %>​% ​
       group_by(Diet,​ Chick) %>​% ​       group_by(Diet,​ Chick) %>​% ​
-      summarise(weight_gain ​= last(weight) - first(weight)) %>​% ​+      summarise(gain_masse ​= last(weight) - first(weight)) %>​% ​
       group_by(Diet) %>​% ​       group_by(Diet) %>​% ​
-      summarise(mean_gain ​= mean(weight_gain)) +      summarise(gain_moyen ​= mean(gain_masse)) 
-diet_summ +diet_mass 
-# A tibble: 4 × +Sourcelocal data frame [2
-    Diet mean_gain + 
-  ​<fctr>     <dbl> +    Diet gain_moyen 
-1      1     ​114.9 +  ​(fctr)      (dbl) 
-2      2     ​174.0 +1      1      114.9 
-3      3     ​229.5 +2      2      174.0 
-4      4     ​188.3+3      3      229.5 
 +4      4      188.3
 </​code>​ </​code>​
 Cette solution démontre bien la simplicité et l'​élégance de la syntaxe de ''​dplyr''​ et ''​magrittr''​ en situation où nous devons manipuler nos données en plusieurs étapes consécutives. Un défi encore plus difficile, même pour les experts en fonctions dans ''​R''​ de base, serait de reproduire les mêmes opérations avec moins de touches de votre clavier. Nous avons essayé et nous avons échoué... Peut-être sommes-nous trop habitués à ''​dplyr''​ maintenant? Cette solution démontre bien la simplicité et l'​élégance de la syntaxe de ''​dplyr''​ et ''​magrittr''​ en situation où nous devons manipuler nos données en plusieurs étapes consécutives. Un défi encore plus difficile, même pour les experts en fonctions dans ''​R''​ de base, serait de reproduire les mêmes opérations avec moins de touches de votre clavier. Nous avons essayé et nous avons échoué... Peut-être sommes-nous trop habitués à ''​dplyr''​ maintenant?