Représenter graphiquement le min de 4 valeurs en fonction du temps.

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

Christophe Genolini
Messages : 691
Enregistré le : 12 Juin 2006, 21:37
Contact :

Représenter graphiquement le min de 4 valeurs en fonction du temps.

Messagepar Christophe Genolini » 06 Juin 2019, 18:50

Bonjour,

J'ai un data.frame de trois colonnes.
- T, la première contient un temps de mesure 0, 1, 2.
- V, la troisième contient la valeur mesurée au temps T.
- R, chaque mesure est effectué 4 fois. la deuxième contient un label pour chaque répétition de la mesure A, B, C, D

Code : Tout sélectionner

T R V
0 A 2.5
0 B 3.1
0 C 2.2
0 D 2.8
1 A 7.5
1 B 8.1
1 C 9.7
1 D 7.8
2 ...

Donc pour chaque T, j'ai quatre mesure de V. Je souhaite représenter graphiquement la meilleur V (donc le min des 4 V) en fonction de T. Avez-vous une idée de comment faire (en sachant que dans mon étude réelle, j'ai 10 mesures et 10 temps) ?

Christophe

Logez Maxime
Messages : 2897
Enregistré le : 26 Sep 2006, 11:35

Re: Représenter graphiquement le min de 4 valeurs en fonction du temps.

Messagepar Logez Maxime » 07 Juin 2019, 09:42

Bonjour,

une façon de faire :

Code : Tout sélectionner

library(dplyr)
library(ggplot2)
tab %>% group_by(T) %>% filter(V == min(V)) %>%
  ggplot(aes(T, V, label = R)) + geom_text()

Après tout dépend si l'information sur V est importante ou non, etc.

Cordialement,
Maxime

Mickael Canouil
Messages : 596
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: Représenter graphiquement le min de 4 valeurs en fonction du temps.

Messagepar Mickael Canouil » 07 Juin 2019, 09:47

Bonjour Christophe,

j'avais la même approche que Maxime, j'ai donc modifié un peu ma proposition.

Code : Tout sélectionner

set.seed(20190607)
library(tidyverse)
.data <- tibble(
  time = rep(1:10, 4),
  replicate = rep(LETTERS[1:4], 10),
  measure = rnorm(10 * 4)
)
.data
#> # A tibble: 40 x 3
#>     time replicate measure
#>    <int> <chr>       <dbl>
#>  1     1 A          1.44 
#>  2     2 B          0.835
#>  3     3 C         -0.395
#>  4     4 D          1.12 
#>  5     5 A         -0.498
#>  6     6 B         -0.409
#>  7     7 C          1.71 
#>  8     8 D          0.230
#>  9     9 A         -0.0246
#> 10    10 B          0.920
#> # … with 30 more rows

Code : Tout sélectionner

.data <- .data %>%
  group_by(time) %>%
  mutate(is_min = measure == min(measure)) %>%
  ungroup()
.data
#> # A tibble: 40 x 4
#>     time replicate measure is_min
#>    <int> <chr>       <dbl> <lgl>
#>  1     1 A          1.44   FALSE
#>  2     2 B          0.835  FALSE
#>  3     3 C         -0.395  FALSE
#>  4     4 D          1.12   FALSE
#>  5     5 A         -0.498  FALSE
#>  6     6 B         -0.409  TRUE 
#>  7     7 C          1.71   FALSE
#>  8     8 D          0.230  FALSE
#>  9     9 A         -0.0246 TRUE 
#> 10    10 B          0.920  FALSE
#> # … with 30 more rows

Code : Tout sélectionner

ggplot(data = .data, mapping = aes(x = time, y = measure, alpha = is_min)) +
  geom_line(data = filter(.data, is_min)) +
  geom_point()

Image

Cordialement,
Mickaël



Retourner vers « Questions en cours »

Qui est en ligne

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

cron