Calcul d'une frequence par individu

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

Séverine Bayle
Messages : 31
Enregistré le : 02 Oct 2014, 16:15

Calcul d'une frequence par individu

Messagepar Séverine Bayle » 31 Jan 2018, 11:19

Bonjour,

Je dispose d'un dataframe avec 2 colonnes sur plus de 50000 lignes :

Code : Tout sélectionner

 individu  date   
       A    20170101
       A    20170504
       A    20170804
       B    20170405
       B    20170201
       B    20170806
       B    20170901
       C    20170107
       C    20170506
       D    20170901
       D    20171101



Je souhaite calculer le nombre de dates par indididu, ainsi que l'écart entre chacune de ces dates, toujours pour chaque individu.
Pouvez-vous m'aider?

Cordialement,

Séverine

Bertrand Vassor
Messages : 46
Enregistré le : 18 Sep 2017, 10:18

Re: Calcul d'une frequence par individu

Messagepar Bertrand Vassor » 31 Jan 2018, 11:35

Bonjour,

Pour nous faire gagner du temps, pourriez vous nous transmettre le code R permettant la création du DF exemple.

Merci.
B

Séverine Bayle
Messages : 31
Enregistré le : 02 Oct 2014, 16:15

Re: Calcul d'une frequence par individu

Messagepar Séverine Bayle » 31 Jan 2018, 11:44

Je l'ai simplement créé à la main dans mon post pour montrer à quoi mon vrai df ressemble.

Cordialement

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

Re: Calcul d'une frequence par individu

Messagepar Mickael Canouil » 31 Jan 2018, 12:42

Bonjour,

Code : Tout sélectionner

DF <- read.table(text = "individu date   
A 20170101
A 20170504
A 20170804
B 20170405
B 20170201
B 20170806
B 20170901
C 20170107
C 20170506
D 20170901
D 20171101", header = TRUE)


Une solution avec le tidyverse (dplyr)

Code : Tout sélectionner

library(tidyverse)
DF %>%
    mutate(
        DatePOSIX= as.Date(as.character(date), format = "%Y%m%d")
    )  %>%
    group_by(individu) %>%
    summarise(
        N = n(),
        Ecart = diff(range(DatePOSIX)),
        Intervalles = paste(diff(sort(DatePOSIX)), collapse = ";")
       
    )

Image

EDIT: avec l'écart entre la première et dernière date et l'intervalle entre chaque date.

Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

Séverine Bayle
Messages : 31
Enregistré le : 02 Oct 2014, 16:15

Re: Calcul d'une frequence par individu

Messagepar Séverine Bayle » 31 Jan 2018, 13:02

C'est parfait !

Merci beaucoup, c'est exactement ce à quoi je voulais arriver. J'avais envisagé plusieurs fonctions mais je ne connaissais pas le package tidyverse.

Cordialement,

Séverine

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

Re: Calcul d'une frequence par individu

Messagepar Mickael Canouil » 31 Jan 2018, 13:05

tidyverse n'est pas véritablement un package, mais un ensemble de plusieurs packages très pratiques dont les plus connus sont dplyr et ggplot2.
Des "cheat sheets" sont disponibles sur le site de rstudio (principale développeur du tidyverse): https://www.rstudio.com/resources/cheatsheets/
Mickaël
mickael.canouil.fr | rlille.fr

Séverine Bayle
Messages : 31
Enregistré le : 02 Oct 2014, 16:15

Re: Calcul d'une frequence par individu

Messagepar Séverine Bayle » 31 Jan 2018, 13:11

Merci pour le conseil, je vais aller jeter un œil :)


Retourner vers « Questions en cours »

Qui est en ligne

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

cron