« Questions-r » : différence entre les versions

Aller à la navigation Aller à la recherche
2 160 octets enlevés ,  10 janvier 2022
arrange question martiste 2
(arrange question martiste)
(arrange question martiste 2)
Ligne 98 : Ligne 98 :
   mutate(data=purrr::map(data,~get_sequences(.,Temp=19))) %>%  
   mutate(data=purrr::map(data,~get_sequences(.,Temp=19))) %>%  
   tidyr::unnest(cols=c(data))
   tidyr::unnest(cols=c(data))
</syntaxhighlight>


Différence entre avec et sans '~' devant la fonction:
Différence entre avec et sans '~' devant la fonction:
Ligne 114 : Ligne 115 :
L'utilisation des formules c'est un subtilité introduite pour gérer les fonctions qui n'ont pas les arguments "dans l'ordre le plus pratique au regard de ce qu'on souhaite faire".  
L'utilisation des formules c'est un subtilité introduite pour gérer les fonctions qui n'ont pas les arguments "dans l'ordre le plus pratique au regard de ce qu'on souhaite faire".  


'''Question complémentaire'''


Et, pour finir, si je veux en sortir 1) le nombre total de séquences, et 2) la durée de la séquence la plus longue, est-ce que tu me conseilles de l'inclure dans la fct 'get_sequences', ou de repartir des résultats de cette fonction et d'alimenter une nouvelle ?
Et, pour finir, si je veux en sortir 1) le nombre total de séquences, et 2) la durée de la séquence la plus longue, est-ce que tu me conseilles de l'inclure dans la fct 'get_sequences', ou de repartir des résultats de cette fonction et d'alimenter une nouvelle ?
LiseV — 23/08/2021
 
ben pour le coup, le nombre de total de séquences et la durée de la séquence la plus longue, ce sont des "agrégations" de ce que tu as fait avant.  
''' Réponse '''
Or, il est possible que tu veuilles utiliser les résultats de get_sequences tels quels (par exemple pour des graphiques)  
Le nombre de total de séquences et la durée de la séquence la plus longue, ce sont des "agrégations" de ce que tu as fait avant. Or, il est possible que tu veuilles utiliser les résultats de get_sequences tels quels (par exemple pour des graphiques). Donc il vaut mieux faire en sorte que cette agrégation ait lieu dans un second temps => définition d'une nouvelle fonction par exemple.
donc il vaut mieux faire en sorte que cette agrégation ait lieu dans un second temps
 
=> définition d'une nouvelle fonction par exemple
En revanche, je pense que tu pourrais faire tourner ce calcul avant de "unnest" car tes séquences n'ont pas des identifiants uniques en l'état (les identifiants ne sont uniques que au sein des sous-jeux de données imbriqués)
En revanche, je pense que tu pourrais faire tourner ce calcul avant de "unnest"  
 
car tes séquences n'ont pas des identifiants uniques en l'état
(les identifiants ne sont uniques que au sein des sous-jeux de données imbriqués)
martiste — 23/08/2021
Yes
martiste — 23/08/2021
avec n_distinct, je chope le nb total de séquences
avec n_distinct, je chope le nb total de séquences
Pour choper la durée de la séquence la plus longue, tu suggérerais quoi ?
Pour choper la durée de la séquence la plus longue, tu suggérerais quoi ?
LiseV — 23/08/2021
<syntaxhighlight lang="r">
tu calcules les durées pour toutes les séquences, puis tu calcules le max
... %>%  
hihi
  group_by(sequence) %>%
bon j'imagine que si tu me poses cette question, c'est que le calcul des durées pose pb?
  summarise(duration=max(time)-min(time)) %>%
max(time)-min(time) fait pas le job?
  ungroup() %>%
en ayant formatté time avec lubridate?
  mutate(n_sequences=n()) %>%
(je dis "time" mais remplace par le nom de variable ad hoc  😉 )
  top_n(1,duration)
martiste — 23/08/2021
</syntaxhighlight>
Ah, j'étais parti sur complétement autre chose du coup....
 
LiseV — 23/08/2021
ben, group_by(sequence) %>% summarise(duration=max(time)-min(time)) me semble l'option la plus évidente a priori?
et même group_by(sequence) %>% summarise(duration=max(time)-min(time)) %>% top_n(1,duration), pour aller vraiment au bout du process
martiste — 23/08/2021
Et tu peux rajouter un 'group_by' au sein d'un 'summarise' ?
LiseV — 23/08/2021
??
tu peux faire group_by %>% mutate %>% ungroup() %>% group_by(autre chose) %>% summarise
mais je sais pas si ça répond à ta question
martiste — 23/08/2021
J'essaie de mettre les deux dans une même fonction, c'est pour ça
summarise(n = n_distinct(sequence, na.rm = TRUE))
et
group_by(sequence) %>% summarise(duration=max(time)-min(time)) %>% top_n(1,duration)
LiseV — 23/08/2021
Là tu pourrais faire  group_by(sequence) %>% summarise(duration=max(time)-min(time)) %>% ungroup() %>% mutate(n_sequences=n()) %>% top_n(1,duration)
martiste — 23/08/2021
Qui ne se font pas au même niveau de groupage
Okay, yé test ça tout dé souite
LiseV — 23/08/2021
le mutate (n_sequences=n()) te rajoute le nombre de séquences sans résumer (ça répète autant de fois que nécessaire la valeur n_sequences)
le mutate (n_sequences=n()) te rajoute le nombre de séquences sans résumer (ça répète autant de fois que nécessaire la valeur n_sequences)
du coup après quand tu gardes que la top duration t'as quand-même l'info qu'il te faut
du coup après quand tu gardes que la top duration t'as quand-même l'info qu'il te faut
martiste — 23/08/2021
Ahh, okay je vois. Mais il faut que j'enlève tous mes 'NA's, parce que c'est eux les 'top duration' pour le moment... 😉
LiseV — 23/08/2021
ah oui effectivement 🙂
martiste — 23/08/2021
pfiou ! Je crois que j'ai réussi
LiseV — 23/08/2021
🎆
martiste — 23/08/2021
Okay, la fonction 'top_n()', elle prend le premier élément d'un vecteur ordonné ? Ou elle prend la valeur max, et donc s'il y en a plusieurs identiques, elle va en sortir plusieurs ?
LiseV — 23/08/2021
non elle prend le max
c'est pour ça que tu lui précises aussi une variable
pour lui dire le max en terme de quoi
martiste — 23/08/2021
Mmh, okay, c'est pour ça que j'ai des doublons
martiste — 23/08/2021
Est-ce qu'il existe un moyen plus rapide de joindre plus de 2 tables que de répéter des jointures successives ?
(et plus élégant, au passage)
== Annonces de nouveau packages R ==
== Annonces de nouveau packages R ==


Utilisateur anonyme

Menu de navigation