Retour à la page d’accueil




Exercice 1: Utilisez %>% pour faire la suite de sélections suivantes surexpt1:

filter(expt1,  background!="Ler" & fluctuation=="Var") %>% 
  select(genotype, blade.length.mm, contains("bolt"))
## # A tibble: 389 × 5
##    genotype blade.length.mm bolt.survival bolt  days.to.bolt
##    <chr>              <dbl> <chr>         <chr>        <dbl>
##  1 Col Ama             15.1 Y             Y               32
##  2 Col Ama             16   Y             Y               32
##  3 Col Ama             17.5 Y             Y               32
##  4 Col Ama             15.1 Y             Y               33
##  5 Col Ama             15   Y             Y               33
##  6 Col Ama             15.1 Y             Y               33
##  7 Col Ama             13.7 Y             Y               33
##  8 Col Ama             17.7 Y             Y               33
##  9 Col Ama             29.7 Y             Y               68
## 10 Col Ama             22.1 Y             Y               68
## # ℹ 379 more rows


BONUS: Transformez l’enchainement de commandes afin d’utiliser des pipes %>% plutôt que objets intermédiaires

expt1 <- read_tsv("../data/burghardt_et_al_2015_expt1.txt")

expt1_filtered <- filter(expt1, fluctuation=="Con" & day.length=="16")

expt1_selected <- select(expt1_filtered,days.to.bolt:total.leaf.length.mm)

summary(expt1_selected)
##   days.to.bolt    days.to.flower  rosette.leaf.num cauline.leaf.num
##  Min.   : 15.00   Min.   : 21.0   Min.   : 6.00    Min.   : 1.000  
##  1st Qu.: 26.75   1st Qu.: 39.0   1st Qu.:14.00    1st Qu.: 4.000  
##  Median : 41.50   Median : 49.0   Median :30.00    Median : 7.000  
##  Mean   : 45.00   Mean   : 53.6   Mean   :31.67    Mean   : 6.827  
##  3rd Qu.: 57.00   3rd Qu.: 70.0   3rd Qu.:46.00    3rd Qu.: 9.000  
##  Max.   :152.00   Max.   :135.0   Max.   :91.00    Max.   :13.000  
##                   NA's   :7       NA's   :9        NA's   :9       
##  blade.length.mm total.leaf.length.mm
##  Min.   : 8.20   Min.   :10.90       
##  1st Qu.:14.45   1st Qu.:22.12       
##  Median :19.20   Median :30.50       
##  Mean   :18.39   Mean   :29.01       
##  3rd Qu.:21.57   3rd Qu.:34.52       
##  Max.   :28.20   Max.   :47.00       
##  NA's   :78      NA's   :62


Solution:

read_tsv("../data/burghardt_et_al_2015_expt1.txt") %>% 
  filter(fluctuation=="Con" & day.length=="16") %>% 
  select(days.to.bolt:total.leaf.length.mm) %>% 
  summary()
##   days.to.bolt    days.to.flower  rosette.leaf.num cauline.leaf.num
##  Min.   : 15.00   Min.   : 21.0   Min.   : 6.00    Min.   : 1.000  
##  1st Qu.: 26.75   1st Qu.: 39.0   1st Qu.:14.00    1st Qu.: 4.000  
##  Median : 41.50   Median : 49.0   Median :30.00    Median : 7.000  
##  Mean   : 45.00   Mean   : 53.6   Mean   :31.67    Mean   : 6.827  
##  3rd Qu.: 57.00   3rd Qu.: 70.0   3rd Qu.:46.00    3rd Qu.: 9.000  
##  Max.   :152.00   Max.   :135.0   Max.   :91.00    Max.   :13.000  
##                   NA's   :7       NA's   :9        NA's   :9       
##  blade.length.mm total.leaf.length.mm
##  Min.   : 8.20   Min.   :10.90       
##  1st Qu.:14.45   1st Qu.:22.12       
##  Median :19.20   Median :30.50       
##  Mean   :18.39   Mean   :29.01       
##  3rd Qu.:21.57   3rd Qu.:34.52       
##  Max.   :28.20   Max.   :47.00       
##  NA's   :78      NA's   :62



Exercice 2: Faite un violon plot du temps de floraison pour les différents génotypes, mais uniquement pour les plantes ayant poussées en jours court (8h de lumière).

Aide: Utilisez filter() pour sélectionner les données et ensuite un pipe (%>%) pour utiliser l’output pour le graphique.

filter(expt1,  day.length==8) %>% 
  ggplot((aes( x=genotype, y=days.to.flower))) +
  geom_violin() +
  ggtitle("plantes ayant poussées en jours court (8h de lumière)")
## Warning: Removed 74 rows containing non-finite values (`stat_ydensity()`).

BONUS

Représentez, uniquement pour les plantes qui contiennent le mot “Col” dans le background, et qui ont poussée à 22°C, un box plot de days.to.bolt en fonction de vernalization, coloré en fonction de la fluctuation. Séparez les graphiques pour avoir une facet par génotype. Utilisez un thème de type theme_bw.

Interprétez le résultat: Est-ce que le temps de floraison de certains génotypes est affecté par la fluctuation de température. Si oui lesquels?

filter(expt1, grepl("Col", background) & temperature == 22) %>% 
  ggplot(aes(x=vernalization, y=days.to.bolt, color=fluctuation)) +
  geom_boxplot()+
  facet_grid(.~genotype) +
  theme_bw()

Interprétation du résultat: On peut voir un effet très marqué de la fluctuation de température pour certains génotypes, avec un temps de floraison plus précoce quand la température varie par rapport à quand elle ne varie pas. Cet effet est très marqué pour les génotypes Col FRI, prmt5 FRI et vin3-4 FRI.



Exercice 3:

Créez une nouvelle colonne “blade.ratio” avec le ratio de blade.length.mm et total.leaf.length.mm

mutate(expt1, blade.ratio=blade.length.mm/total.leaf.length.mm)
## # A tibble: 957 × 16
##    plant_nb genotype background temperature fluctuation day.length vernalization
##       <dbl> <chr>    <chr>            <dbl> <chr>            <dbl> <chr>        
##  1        1 Col Ama  Col                 12 Con                 16 NV           
##  2        2 Col Ama  Col                 12 Con                 16 NV           
##  3        3 Col Ama  Col                 12 Con                 16 NV           
##  4        4 Col Ama  Col                 12 Con                 16 NV           
##  5        5 Col Ama  Col                 12 Con                 16 NV           
##  6        6 Col Ama  Col                 12 Con                 16 NV           
##  7        7 Col Ama  Col                 12 Con                 16 NV           
##  8        8 Col Ama  Col                 12 Con                 16 NV           
##  9        1 Col Ama  Col                 12 Con                  8 NV           
## 10        2 Col Ama  Col                 12 Con                  8 NV           
## # ℹ 947 more rows
## # ℹ 9 more variables: bolt.survival <chr>, bolt <chr>, days.to.bolt <dbl>,
## #   days.to.flower <dbl>, rosette.leaf.num <dbl>, cauline.leaf.num <dbl>,
## #   blade.length.mm <dbl>, total.leaf.length.mm <dbl>, blade.ratio <dbl>

BONUS:
Créez une nouvelle colonne “late.flowering” qui contient TRUE si days.to.bolt est supérieur à 70, et FALSE days.to.bolt est inférieur à 70.
Aide: Trouvez la solution en utilisant google

# En tapant "mutate tidyverse create new column depending on value other column" dasn google, le 1er site (https://www.marsja.se/r-add-column-to-dataframe-based-on-other-columns-conditions-dplyr/) propose plusieurs solutions pour créer une colonne en fonction des valeurs d'une autre colonne. Voici l'une d'elles qui utilise la fonction mutate():

mutate(expt1, late.flowering=if_else(condition = days.to.bolt>70, TRUE, FALSE))
## # A tibble: 957 × 16
##    plant_nb genotype background temperature fluctuation day.length vernalization
##       <dbl> <chr>    <chr>            <dbl> <chr>            <dbl> <chr>        
##  1        1 Col Ama  Col                 12 Con                 16 NV           
##  2        2 Col Ama  Col                 12 Con                 16 NV           
##  3        3 Col Ama  Col                 12 Con                 16 NV           
##  4        4 Col Ama  Col                 12 Con                 16 NV           
##  5        5 Col Ama  Col                 12 Con                 16 NV           
##  6        6 Col Ama  Col                 12 Con                 16 NV           
##  7        7 Col Ama  Col                 12 Con                 16 NV           
##  8        8 Col Ama  Col                 12 Con                 16 NV           
##  9        1 Col Ama  Col                 12 Con                  8 NV           
## 10        2 Col Ama  Col                 12 Con                  8 NV           
## # ℹ 947 more rows
## # ℹ 9 more variables: bolt.survival <chr>, bolt <chr>, days.to.bolt <dbl>,
## #   days.to.flower <dbl>, rosette.leaf.num <dbl>, cauline.leaf.num <dbl>,
## #   blade.length.mm <dbl>, total.leaf.length.mm <dbl>, late.flowering <lgl>



Exercice 4:

Reproduisez cette figure de Burghard et al 2015

Aide:


mutate(expt1, blade.ratio=blade.length.mm/total.leaf.length.mm) %>% 
  unite("condition", day.length, temperature, fluctuation, sep=".") %>% 
  filter(background%in%c("Col","Ler")) %>% 
  ggplot(aes(x=condition, y=blade.ratio)) +
  geom_boxplot()+
  ylim(0,1) +
  facet_grid(.~background) +
  theme(axis.text.x=element_text(angle = 45))
## Warning: Removed 150 rows containing non-finite values (`stat_boxplot()`).

BONUS: Ce bonus vous permettra d’avoir des valeurs de x plus proches du graphique

mutate(expt1, blade.ratio=blade.length.mm/total.leaf.length.mm) %>% 
  mutate(LD.SD=str_replace(day.length, "16","LD"),
         LD.SD=str_replace(LD.SD, "8","SD")) %>% 
  unite("condition", LD.SD, temperature, fluctuation, sep=".") %>% 
  filter(background%in%c("Col","Ler")) %>% 
  ggplot(aes(x=condition, y=blade.ratio)) +
  geom_boxplot()+
  ylim(0,1) +
  facet_grid(.~background) +
  theme_bw() +
  theme(axis.text.x=element_text(angle = 45),
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank())
## Warning: Removed 150 rows containing non-finite values (`stat_boxplot()`).